NSJSONSerialization 不解析这个 JSON
Posted
技术标签:
【中文标题】NSJSONSerialization 不解析这个 JSON【英文标题】:NSJSONSerialization doesn't parse this JSON 【发布时间】:2013-10-18 06:23:56 【问题描述】:我正在尝试解析这个在我看来写得很好的 JSON,但 NSJSONSerialization
认为与 AFAIK 不同,因为它返回的是 NSArray
。
这是我的代码:
NSData* gamesData = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"http://s42sport.com/polarice/json/games.json"]
];
NSDictionary* json = nil;
if (gamesData)
json = [NSJSONSerialization
JSONObjectWithData:gamesData
options:kNilOptions
error:nil];
NSLog(@"%d",json.count);
问题是,
JSON 有什么问题?为什么 NSSerialization 不返回我的 NSDictionary?
编辑:是的,我刚刚了解了 [...] 与 ...。谢谢你。
【问题讨论】:
那个 JSON 是一个数组。除了您期望它是一本字典之外,没有任何问题。 看看我的代码真的很适合你... 看起来你连基本的 JSON 语法都没有花太多精力。 @hawk 我的代码解决了他的要求。 @JitendraDeore 我的评论是针对原始海报的。 【参考方案1】:通过这种方式解析你的json
。
NSURL * url=[NSURL URLWithString:@"http://s42sport.com/polarice/json/games.json"];
NSData * data=[NSData dataWithContentsOfURL:url];
NSError * error;
NSMutableDictionary * json=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
NSLog(@"%@",json);
NSArray * array1=[json valueForKey:@"c"];
NSLog(@"%@",array1);
试试这个代码。这肯定对你有用。
【讨论】:
是的,这行得通,因为选项:NSJSONReadingMutableLeaves? 请问,代码有什么不同?你现在让它返回一个 NSmutableDictionary。我以为它会返回一个 NSMutableArray 没问题,无论你想要什么,你都可以获得 NSMutableArray 取决于要求。【参考方案2】:NSDictionnary 应该用于 Object 而 NSArray 用于 JSON 数组
NSArray* json = nil;
if (gamesData)
json = [NSJSONSerialization
JSONObjectWithData:gamesData
options:kNilOptions
error:nil];
NSLog(@"%d",json.count);
【讨论】:
【参考方案3】:您列出的 JSON 文件是一个数组(它以方括号开头和结尾),因此 Objective-C 使用 NSArray 根对象反映了这一点。
【讨论】:
以上是关于NSJSONSerialization 不解析这个 JSON的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSJSONSerialization 解析 twitter 搜索 json 数据
使用 NSJSONSerialization 解析 JSON - 抛出 NSException