我正在处理以下代码的一些问题:
let session = URLSession.shared
session.dataTask(with: request) { data, response, error in
if let data = data {
let string1 = String(data: data, encoding: String.Encoding.utf8) ?? "Data could not be printed"
print(string1)
do {
if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] {
print("success")
print(jsonData as AnyObject)
}
} catch {
print(error.localizedDescription)
}
}
}.resume()
当我打印出string1
时,它是有效的json并且行print("success")
被执行。但是,当它达到print(jsonData as AnyObject)
时,输出类似于json,但有=
代替:
和()
代替[]
。除此之外,一些键甚至不是字符串。它看起来如下:
(
{ "build_path" = "<null>";
city = "<null>";
cm = "<null>";
country = "<null>";
}, {
//similar to above
}
)
(这些值实际上是当前为空)
我不确定为什么会这样,所以任何帮助都会受到赞赏。感谢。
答案 0 :(得分:1)
删除as AnyObject
中的print(jsonData as AnyObject)
。它将以您期望的格式打印。
答案 1 :(得分:0)
我查看了一些旧代码,因此请尝试使用JSONSerialization部分的以下行:
if let jsonData = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:Any]
我只是得到了正确的结果:
print(jsonData)
希望这有帮助。