【发布时间】:2017-11-13 14:55:26
【问题描述】:
过去几天我一直在谷歌上搜索并尝试自动转义 alamofire 的正斜杠。
(其中“/path/image.png”变为"\/path\/image.png")
但是,如果您使用 swiftyJson、通过 httpBody 发送或使用 Alamofire 参数类,所有答案都指向解决方案。
https://github.com/SwiftyJSON/SwiftyJSON/issues/440
我没有使用 SwiftyJson,感觉安装 API 只是为了解决问题,就像用大锤敲钉子一样。
无论如何。
我的问题是每当我尝试向 API 发送参数时,Alamofire 的 JSONEncoding.default 善意地转义正斜杠。我不希望 Alamofire 这样做。
在我的情况下,我想发送以下参数并让 Alamofire 忽略正斜杠
let parameter : Parameters = ["transaction": "/room/120"]
Alamofire.request(endPoint , method: .post, parameters: parameter ,encoding: JSONEncoding.default , headers: header).validate(statusCode: 200..<300).responseObject { (response: DataResponse<SomeModel>) in
}
也许创建一个自定义 json 编码器是实现此目的的方法,但我发现很少有关于如何最好地进行此操作的文档。
我也试过
let parameter : [String : Any] = ["transaction": "/room/120"]
Alamofire.request(endPoint , method: .post, parameters: parameter ,encoding: JSONEncoding.default , headers: header).validate(statusCode: 200..<300).responseObject { (response: DataResponse<SomeModel>) in
Really appreciate all your help and suggestions.
我什至读到后端应该能够处理转义字符,但它对 android 开发人员来说工作正常。因此,如果是我的代码发送了错误的数据,那么我觉得应该从源头解决
托马斯
【问题讨论】:
-
我也有同样的头痛
-
我不确定您对 JSON 标准 (ECMA-404) 的熟悉程度,但
"/"应该在 JSON 字符串中转义,所以"\/"是正确的,完全符合标准——你不应该担心其他平台如何解释任何标准,你应该总是回到源头——正如你刚才所说的。