[
{
"_id": "557f27522afb79ce0112e6ab",
"endereco": {
"cep": "asdasd",
"numero": "asdasd"
},
"categories": [],
"name": "teste",
"hashtag": "teste"
}
]
返回nil且没有错误:
var json = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: &erro) as? NSDictionary
答案 0 :(得分:4)
它返回nil
没有错误,因为它不是JSON解析失败的。它失败了,因为结果对象的条件类型转换为字典。 JSON不代表字典:它是一个包含一个项目的数组(恰好是一个字典)。外[
和]
表示数组。因此,当您解析此内容时,您希望将其转换为NSArray
。
例如,在Swift 1.2中你可以:
if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error) as? NSArray, let dictionary = json.firstObject as? NSDictionary {
println(dictionary)
} else {
println(error)
}
或者您可以将其转换为字典数组:
if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error) as? [[String: AnyObject]], let dictionary = json.first {
println(dictionary)
} else {
println(error)
}
答案 1 :(得分:0)
调用isValidJSONObject:或尝试转换是判断给定对象是否可以转换为JSON数据的明确方法。
isValidJSONObject(_ :) 返回一个布尔值,指示是否可以将给定对象转换为JSON数据。
宣言 迅速 class func isValidJSONObject(_ obj:AnyObject) - >布尔 参数 OBJ 要测试的对象。 回报价值 如果obj可以转换为JSON数据,则为true,否则为false。
讨论 可用性 适用于iOS 5.0及更高版本。