【发布时间】:2020-05-21 00:04:14
【问题描述】:
您好,我正在使用 Swift 5 发出 HTTP POST 请求,该请求返回一个 JSON 对象列表,我认为这是导致我的错误的原因,我似乎找不到解决方案,因为我已经搜索了几乎每个示例可以在 stackoverflow 和 youtube 以及 Apple 的文档中找到,尽管这似乎是一个基本概念。 以下是我的回复:
[
{
"_id": "---------------",
"phone_number": "xxx-xxx-xxx"
"first_name": "Name",
"last_name": "LastName",
"gender": "Female",
"verified": true
},
{
"_id": "---------------",
"phone_number": "xxx-xxx-xxx"
"first_name": "Name",
"last_name": "LastName",
"gender": "Female",
"verified": true
}
]
我用来发出 HTTP 请求的代码是:
let url = URL(string: "URLString")!
let json: [String:Any] = ["phone_number":phoneNumber]
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
do{
request.httpBody = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
}catch let error {
print(error.localizedDescription)
}
//HTTP Headers
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
//URL data task
let task = session.dataTask(with: request) { (data, response, error) in
guard error == nil else{
print("Error!")
return
}
guard let data = data else{
print("Error fetching data")
return
}
do {
guard let responseJSON = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any] else {
print("Unable to serialize response!") //FAILS HERE EVERY TIME
return
}
print(responseJSON)
print("WOO made it!")
}catch let error {
print("Error with response!")
}
}
task.resume()
我不确定到底是什么问题,但我已经指出它失败的地方,我已经尝试在转换之前打印出数据,只是为了确保它不是空的,它说像 2000 字节所以我知道它不是空的。我的猜测是存在问题,因为它采用对象列表的格式,而不是大多数示例所示的仅一个对象。有时,我的快速服务器端上的 HTTP 正文也为零,因此不确定我是否做错了那部分。但截至目前,我只想能够解析我的响应,所以我可以开始调试其余部分。感谢您的帮助。
【问题讨论】:
标签: json swift express serialization httprequest