swift中的JSON转换

swift中的JSON转换,json,swift,Json,Swift,我试图将一些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 : NSD

我试图将一些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
这条线走得更远,但随后在下一条线上崩溃(紧跟在上一条线之后)


JSON是一个字典数组(外方括号是数组;大括号代表字典)。因此,您希望将
NSJSONSerialization
行转换为数组。当您抓取第一项时,它是一个字典,因此您应该将其转换为字典(而不是数组)

如果您愿意,也可以使用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
可选绑定优雅地处理错误

let productList = NSJSONSerialization.JSONObjectWithData(data, options: nil, error:&jsonerror) as NSArray
let returnValue = productList.objectAtIndex(0) as NSDictionary
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)")
}