我在对来 self 的服务器(它是 PHP 后端)的 iOS 应用程序上的 JSON 响应进行序列化时遇到一些问题。我的应用程序发送带有适当参数的发布请求,验证它们,将结果放入数组中,然后对其进行编码。现在这不是问题,代码可以正常工作。然而,这是它们之间的联系。请看下面的 PHP 代码。
echo json_encode($array)
现在进入 xcode,我使用 alamofire 发送请求,如下面的代码所示
Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseString { response in
print(response)
}
}
正如您在 .responseString 中看到的那样,因为显然如果我使用 .responseJSON ,它会抛出 code=3480 错误,并且我想从我自己的响应 JSON 中获取特定数据。我尝试了其他方法来在线修复此问题,但他们都选择了 .responseString 选项。
为什么会发生这种情况? JSON 类型不兼容吗?这其中有什么 secret 吗?
我只想从我的 JSON 响应中获取特定数据,例如“消息”,而当我获取字符串时这是不可能的...任何帮助都会受到赞赏!
我正在使用 Alamofire 4.3
最佳答案
尝试以下操作,以便 Alamofire 将通过 JSONSerialization
运行响应数据,具体取决于您可以使用 json 作为的 JSON 响应类型? [字符串:任意]
或 json 作为? [[字符串:任意]]
Alamofire.request(URL, method: .post, parameters: parameters).responseJSON { response in
guard response.error == nil, let json = response.result.value else {
print("Error: \(response.error?.localizedDescription ?? "no content")")
return
}
if let jsonDict = json as? [String : Any] {
print(jsonDict)
} else if let jsonArray = json as? [[String : Any]] {
print(jsonArray)
}
}
关于php - 为什么我的 php json_encode 不能在 alamofire 中使用 .responseJSON 序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55670238/