我会保持简短。我正在使用此代码将JSON从本地文件解析为对象数组:
-(void)populateData
{
NSString* sourcePath = [[NSBundle mainBundle]pathForResource:@"ships" ofType:@"json"];
//get json string
NSString* JSONData = [[NSString alloc] initWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];
NSData* data = [JSONData dataUsingEncoding:NSUTF8StringEncoding];
//put json in array
ships = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@", ships);
}
(注意:为简洁起见,只显示一个,每个约有20个条目)
此方法适用于格式如下的JSON:
[
{
"name": "Santa Maria",
"operator": "Kingdom of Spain",
"flag": "flag_spain"
}
]
它为JSON返回null,格式如下:
[
{
"name": "Santa Maria",
"operator": "Kingdom of Spain",
"flag": "flag_spain",
"launched": "November 19, 1890",
"fate": "Destroyed in Havana, Cuba in Feburary 1898."
"cost":"$4,677,788.75",
"image": "maine_img",
"image_attribution": "Image is in the public domain."
}]
我不知道为什么较小的那个有效,而较大的那个没有。任何帮助将不胜感激。
答案 0 :(得分:3)
之后有一个逗号丢失:
"fate": "Destroyed in Havana, Cuba in Feburary 1898."
答案 1 :(得分:2)
这是由于此行的语法错误:
"fate": "Destroyed in Havana, Cuba in Feburary 1898."
(最后缺少逗号)
有一些工具可以发现这种错误。例如,http://jsonlint.com。这个似乎有更好的错误消息http://jsonformatter.curiousconcept.com/。
答案 2 :(得分:0)
请原谅,但是从NSData转换为NSString然后再转换回NSData也毫无意义。只需调用dataWithContensOfFile:并完成它。