ios - 无法在 swift 4 中解析 JSON

标签 ios json swift parsing

我在 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/

相关文章:

javascript - 按键名过滤 JSON 数据

javascript - 如何在 Javascript 中创建一个 div 并将其定位在 html 模板的中间

ios - 如何使用 branch.io 访问分配给 URL 的参数?

ios - Swift 2.2 #selector 协议(protocol)扩展编译器错误

ios - Swift 3.0 搜索栏按字母过滤(不是单词)

ios - 带 CLPlacemark 的 if let 语句

iphone - XCode 4.2 安装错误

ios - iOS 中的双向滚动表

ios - 在 UIWebView 中使内容适合宽度

javascript - 将 HTML 代码更改为 json_encode