在swift ios中解析NSJSON序列化中的json时出错

Posted

技术标签:

【中文标题】在swift ios中解析NSJSON序列化中的json时出错【英文标题】:Getting error while parsing json in NSJSON serialization in swift ios 【发布时间】:2017-01-16 08:36:39 【问题描述】:
 func connectionDidFinishLoading(_ connection: NSURLConnection)
    

    NSLog("\(statusResponseData)")

    let strData:NSDictionary! = (try! JSONSerialization.jsonObject(with: statusResponseData, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary

当我将代码从 swift 2.2 转换为 swift 3.0 时,出现以下错误。

无法使用列表类型的参数调用 json 对象(使用 NSMutable 数据!选项:JSONSerialization.ReadingOptions)。

请帮我解决这个问题。

【问题讨论】:

阅读 Swift 3 发行说明,您没有这样做,并阅读您必须对 Swift 2 代码进行哪些更改。除非您知道原因,否则不要使用 mutableContainers。我希望您知道,如果出现任何问题,您的代码将会崩溃。 @gasher729。我是 swift 新手。你能帮我写代码吗? 【参考方案1】:

替换:

 let strData:NSDictionary! = (try! JSONSerialization.jsonObject(with: statusResponseData, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary

与:

 if let strData = try JSONSerialization.jsonObject(with: statusResponseData, options: []) as! JSONObject 
        //Do what you need to!
      

我不知道为什么所有教程都建议使用mutableContainers 选项。使用原生集合类型时,您在 Swift 中根本不需要它。

【讨论】:

为什么?这就是所谓的“货物崇拜编程”。

以上是关于在swift ios中解析NSJSON序列化中的json时出错的主要内容,如果未能解决你的问题,请参考以下文章

NSJSON序列化编码?

NSJSON序列化问题。发送到 api 的 JSON 对象不正确

NSJSON序列化到核心数据

如何在 swift 2.0 中使用 catch 概念

ios swift 2 解析中的流式音频

Swift 中的 JSON 解析(iOS)