json - 带有嵌套 JSON 参数的 Alamofire 发布请求

标签 json swift alamofire swifty-json

我的 Alamofire 发布请求如下所示:

Alamofire.request("http://...", method: HTTPMethod.post, parameters: parameters, encoding: JSONEncoding.default, headers: nil)
         .responseJSON(completionHandler: {(response) in ... })

如果我的参数很简单,一切正常:

let parameters: Parameters = [
    "firstName": "John",
    "lastName": "Doe"
]

如果我的参数包含 json 对象,我就会遇到问题。

let address: JSON = [
    "street": "1234 Fake St",
    "city": "Seattle",
    "state": "WA"
]

let parameters: Parameters = [
    "firstName": "John",
    "lastName": "Doe",
    "address": address
]

Alamofire 请求没有执行,我的应用程序崩溃了。

最佳答案

我认为这里的问题是 Alamofire 试图将参数编码为 json,而该参数已经是 json 对象。本质上,双重编码会导致应用程序崩溃。

我找到的解决方案是在使用 SwiftyJSON 的 .rawValue 执行请求之前解码 json 参数。

let parameters: Parameters = [
    "firstName": "John",
    "lastName": "Doe",
    "address": address.rawValue
]

https://github.com/SwiftyJSON/SwiftyJSON#raw-object

关于json - 带有嵌套 JSON 参数的 Alamofire 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294012/

相关文章:

javascript - 在 jQuery 中访问 Wikipedia API JSON 数据

ios - 从本地通知打开应用程序后动画标签 [Swift 3.0 - Xcode 8]

swift - Alamofire,对象映射器, Realm : Nested Objects

swift - 将 swifty json 数组保存为用户默认值

json - 在 Swift 中解析 Gravatar 配置文件 JSON

java - Retrofit2 HTTP 获取 Json 到 RecyclerView

javascript - 使用 SABA 的 Web 服务

xcode - SKSpriteNode 快速检测到触摸

swift - 用于沙盒测试的连续登录对话框

swift 错误 "Domain=NSCocoaErrorDomain Code=3840 "字符 1 周围的值无效。”