我正在尝试使用 Swift 将一些数据发布到服务器:
要创建 JSON,我执行以下操作。
let json: [String: Any] = ["jwt": jwt as Any, "comment": newmessage as Any,"isuser": true,"ismax": false]
这似乎有效,因为调试器显示了下面列出的 4 个键值对。然后我尝试序列化正在使用:
let jsonData = try? JSONSerialization.data(withJSONObject: json)
这似乎不起作用,因为 jsonData 对象将调试器记录为 0 字节。
我的发送代码是:
let url = URL(string: "https://api-endpoint")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
}
虽然编译器没有抱怨,但在调试器中,我可以看到 jsonData 有 0 个字节,并且 json 似乎没有被发送。
我的代码有什么问题:
值得注意的是,尽管我知道它们是字符串,但编译器强迫我将一些数据转换为 Any。json 对象在调试器中显示为:
(lldb) po json
▿ 4 elements
▿ 0 : 2 elements
- key : "comment"
▿ value : Optional<String>
- some : "Hi"
▿ 1 : 2 elements
- key : "isuser"
- value : true
▿ 2 : 2 elements
- key : "ismax"
- value : false
▿ 3 : 2 elements
- key : "jwt"
▿ value : Optional<String>
- some : "<-Long hash token ie string->"