我正在尝试使用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->"
答案 0 :(得分:-1)
let resultSerialization: AnyObject? = try JSONSerialization.jsonObject(with: dataResponse, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
if (resultSerialization is [AnyHashable: Any]) == true
{
dictionaryResponse = resultSerialization as? NSMutableDictionary
}