JSON解析返回空值仅适用于较大的值
问题描述:
我将保留此简要内容。我使用这个代码来解析从本地文件JSON到对象的数组: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."
}]
我还没有最小的想法,为什么较小的人工作,而较大的人没有。任何帮助,将不胜感激。
答
有一个逗号后失踪:
"fate": "Destroyed in Havana, Cuba in Feburary 1898."
+0
这就是我在做完其中一个项目之后获得复制粘贴的内容...感谢您的注意事项。 (等待10分钟以接受答案) – Tarkenfire 2013-05-08 22:50:34
答
这是由于语法错误,在这条线:
"fate": "Destroyed in Havana, Cuba in Feburary 1898."
(末尾缺少逗号)
有工具发现这种错误。例如,http://jsonlint.com。这似乎有更好的错误消息http://jsonformatter.curiousconcept.com/。
答
请原谅,但从NSData转换为NSString,然后返回NSData是没有意义的。只需调用dataWithContensOfFile:并完成它。
错误信息告诉你什么? – 2013-05-08 23:57:41
有没有,因为我有JSON解析设置为零的错误回调。 – Tarkenfire 2013-05-09 00:20:17
为什么呢? – 2013-05-09 00:36:02