在 Swift3 中解析 JSON

Posted

技术标签:

【中文标题】在 Swift3 中解析 JSON【英文标题】:Parse JSON in Swift3 【发布时间】:2017-01-27 06:17:30 【问题描述】:

使用下面的代码解析JSON,遇到问题

 let result = "
    status = ok;
    token = XXXXX;
"
                do 
                    let json = try JSONSerialization.jsonObject(with: (result as? Data)! , options: JSONSerialization.ReadingOptions())
                    print("Further data \(json)")
                 catch 
                    print(error)
                

            

面临以下异常:

无法将“__NSDictionaryI”(0x111789238) 类型的值转换为 'NSData' (0x1117882e8)。 (lldb)

非常感谢任何帮助。

【问题讨论】:

您是否在 google 上搜索过错误和工作示例? 您的结果已经是字典。无需使用JSONSerialization 这不是 JSON。 (结果为?数据)! -- 你不能这样转换。 “结果”是字典。你需要通过'NSData' @NiravD 看起来 result 实际上是一个字符串,尽管它不会按原样编译多行。它也不是 JSON。 【参考方案1】:

首先,JSON 格式不正确。它应该像

  
"status":"ok",
"token":"XXXXX"

其次,您正在尝试将字符串类型转换为 NSData,这是不可能的。问题在

(result as? Data)! 

你应该这样做:

let resultData = result.data(using: String.Encoding.utf8)

【讨论】:

以上是关于在 Swift3 中解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

JSON数据未在swift3中使用Alamofire进行解析

数据 > JSON - Swift3 - 转换和解析

如何使用 SWIFT3 解析此 JSON [重复]

解析 JSON Swift 3 CTA 火车跟踪器

swift3解析模型问题

试图将 JSON 解析为 swift3 并显示到 UILabel