【问题标题】:JSON conversion in swift快速的 JSON 转换
【发布时间】:2014-12-15 12:55:43
【问题描述】:

我正在尝试将一些 obj-c 代码转换为 swift 专门处理 JSON 到 swift 转换的部分。

我有一个 JSON 字符串

[{"ID":"1","Field1":"666666","Field2":"111111","Field3":"1","Field4":"30"},
 {"ID":"59","Field1":"SCJtDKw","Field2":"dwdSQz8v","Field3":"1","Field4":"1"}]

如何将其转换为数组或字典?

我试过了

var ProductList : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error:&jsonerror) as NSDictionary

但这在线崩溃:

0x1059ea662:  nopw   %cs:(%rax,%rax)

我也试过把它转换成数组

var ProductList : NSArray = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error:&jsonerror) as NSArray

这条线走得更远,但随后在下一行崩溃(紧接在上一行之后)

 var ReturnValue : NSMutableArray = ProductList.objectAtIndex(0) as NSMutableArray

【问题讨论】:

    标签: json swift


    【解决方案1】:

    您的 JSON 是一个字典数组(外部方括号是数组;大括号代表字典)。因此,您希望将 NSJSONSerialization 行转换为数组。当你抓住第一个项目时,那是一个字典,所以你应该把它转换成这样(而不是数组)。

    let productList = NSJSONSerialization.JSONObjectWithData(data, options: nil, error:&jsonerror) as NSArray
    let returnValue = productList.objectAtIndex(0) as NSDictionary
    

    如果你愿意,你也可以使用 Swift 字典数组:

    if let productList = NSJSONSerialization.JSONObjectWithData(data, options: nil, error:&jsonerror) as? [[String: AnyObject]] {
        let returnValue = productList[0]
        // use returnValue here
    } else {
        println("JSONObjectWithData error: \(jsonerror)")
    }
    

    第二个示例还使用if let 可选绑定来优雅地处理错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2015-04-04
      • 2023-02-13
      • 1970-01-01
      • 2017-11-20
      相关资源
      最近更新 更多