JSON解析仅返回大值的空值

时间:2013-05-08 22:44:19

标签: ios objective-c 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."
  }]

我不知道为什么较小的那个有效,而较大的那个没有。任何帮助将不胜感激。

3 个答案:

答案 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:并完成它。