使用Alamofire请求后解析json["description"]返回nil问题求助
解决Alamofire请求后JSON字段取值为nil的问题
嘿,我一眼就发现问题所在啦!你控制台打印的JSON结构里,description字段并不是直接在根节点下,而是嵌套在result这个对象里面的,你直接用json["description"]去取值,自然找不到对应的数据,所以返回了nil。
咱们来修改代码就能解决:
正确的取值方式
你需要先拿到result这个子对象,再从里面提取description字段,代码可以改成这样:
Alamofire.request("http://.../api/v1.8/set/order/", method: .get, parameters: params) .responseString { response in switch response.result { case .success(let value): print("value\(value)") var json = JSON(value) // 先获取result对象,再取description let result = json["result"] let nass = result["description"].string print("nass\(nass)") // 也可以直接链式调用简化代码 // let nass = json["result"]["description"].string } }
更安全的可选绑定写法
如果想让代码更健壮,避免因为JSON结构变化导致崩溃,还可以用可选绑定的方式来取值:
Alamofire.request("http://.../api/v1.8/set/order/", method: .get, parameters: params) .responseString { response in switch response.result { case .success(let value): print("value\(value)") let json = JSON(value) if let resultDict = json["result"].dictionary, let desc = resultDict["description"]?.string { print("description: \(desc)") } } }
这样修改后,你就能正确拿到description的内容啦!
内容的提问来源于stack exchange,提问作者user9696953
相关产品推荐
相关产品推荐

