我在 swift 4 中从 JSON 获取值时遇到问题。
{
"meta": {"expiration": 0,"flags": 33456},
"json": "{\"key\":\"string\",\"value\":{\"failed_attempts\":\"1\"}}",
"xattrs": {}
}
我试过的代码
if let resultData = responseBody["json"] as? [String: AnyObject]{
if let val = resultData["value"] as? [String: AnyObject]{
if let attempt = val["failed_attempt"] as? String {
print(attempt)
}
}
}
我尝试在下面的行中打印,它正确地打印了 json 数组中的所有对象,但是当我尝试将返回类型添加为 [String: AnyObject] 时,它返回 nil 值。有人可以给我一些建议吗?
response["json"]
最佳答案
将 AnyObject
替换为 Any
。字典是结构,而不是对象,因此转换会失败。
我还建议学习 Codable 以在将来处理 JSON。
编辑:
您需要先将数据序列化为 JSON 对象。 Data
类不会自动转换为 JSON。
do {
let jsonRoot = try JSONSerialization.jsonObject(with: responseBody, options: []) as! [String: Any]
if let json = jsonRoot["json"] as? [String: Any],
let val = json["value"] as? [String: Any],
let attempt = val["failed_attempt"] as? String {
print(attempt)
}
} catch {
print("Invalid data", error)
}
关于ios - 无法在 swift 4 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048522/