gpt4 book ai didi

json - Alamofire 字符串参数硬编码有效,但作为字符串参数传递则无效

转载 作者:行者123 更新时间:2023-11-30 11:38:47 25 4
gpt4 key购买 nike

我正在尝试进行 Alamofire 服务调用来检索 JSON 中的项目列表。我遇到的问题是,每当我输入特殊字符时:例如 ' 它会在发送请求时将字符串解析为 unicode 字符串。当我输入 o'sheas 时,它回来显示我正在搜索 O\U2019sheas

func sendGetRequest(passedInString: String) {

PARAMETERS["searchTxt"] = passedInString

Alamofire.request(URL, method: .get , parameters: PARAMETERS, headers: HEADER)

.validate(statusCode: 200..<400)

.responseJSON { response in
debugPrint(response.request!)
switch response.result {
// GETTING NO RESULTS BECAUSE THE REQUEST IS TURNING the o'sheas into O\U2019sheas

但奇怪的是,如果我只是替换它:

 PARAMETERS["searchTxt"] = passedInString

使用硬编码字符串(我最初输入的字符串,但没有得到任何结果)

 PARAMETERS["searchTxt"] = "o'sheas"

...它工作得很好,并且不会将其转换为 O\U2019sheas。知道如何解决这个问题,更重要的是,为什么当作为字符串参数而不是硬编码字符串传入时会发生这种情况?

更新:

我尝试添加 URLEncoding.default 作为编码参数,结果相同。

我还尝试创建一个 Swift 字符串扩展以在 searchTxt 上使用,将其作为参数传递,如下所示:

PARAMETERS["searchTxt"] = passedInString.escapeSpecialCharacters()








extension String {
mutating func escapeSpecialCharacters() {
// 1. Define replacements
let replacementCharacters = ["'" : "\'"]
// 2. Cycle through each replacement defined in the replacementCharacters array and remodify the string accordingly.
replacementCharacters.keys.forEach {
// 3. Replacing self with new modified string
self = self.replacingOccurrences(of: $0, with: replacementCharacters[$0]!)
}
}
}

但结果相同。

最佳答案

  1. 如果您确定存在此 Unicode 问题,则可以使用编码器和解码器功能来处理此问题。

  2. 或者,如果您知道您的字符串始终相同,则使用正则表达式附加“\”

关于json - Alamofire 字符串参数硬编码有效,但作为字符串参数传递则无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com