0
我有一个关于在iOS5中解析JSON响应的问题。解析多个对象的JSON响应
目前,我正在关注this指南,以帮助我解析从第三方映射服务返回的JSON响应。
一切正常,但由第三方服务器返回的JSON响应与指南本身显示的响应有所不同。
简而言之,整个JSON响应的整体结构看起来是这样的:
{
"directions": [....],
"messages": [....],
"routes":
{
"features": [
{
"attributes": {....},
"geometry":
{
"paths": [....]
}
}
]
}
}
This是实际的JSON查询网址。
通过使用此行代码,
NSDictionary * jsonResponse = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
我能够成功地获得jsonResponse字典报告,它有3个键/值对的,但我的最终目标是获取存储在“数组routes.features.geometry.paths'。
这是我当前的代码块得到的最后一组阵列值:
NSDictionary * jsonResponse = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSArray * jsonArray = [jsonResponse valueForKeyPath:@"routes.features.geometry.paths"];
jsonArray = [jsonArray objectAtIndex:0];
jsonArray = [jsonArray objectAtIndex:0];
我想知道是否有人可能的,我应该如何去在一个更优雅的方式做这更好的主意吗?
非常感谢!
不幸的是,当我这样做,我得到一个错误: ***终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因是:“ - [__ NSCFArray objectForKey:]:无法识别选择器发送到实例0xa0ce660' – Earthling
[[[[[jsonResponse objectForKey:@“routes”] objectForKey:@“features”] objectAtIndex:0] objectForKey:@“geometry”] objectForKey:@“paths”];这将运行我猜,因为我再次看到JSON和你的“功能”节点包含一个数组,然后遍历到词典。 –
检查json是否有字典或数组的快速注释,如果您遇到此字符“[”,而且该元素之外的任何元素都将作为数组遍历,并且如果您发现元素之外的任何元素为“{”,将以字典 –