swift中的JSON转换
我试图将一些obj-c代码转换为swift,特别是处理JSON到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
[{"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)")
}