使用多个对象parsingJSON响应

我有一个关于在iOS5中parsingJSON响应的问题。

目前,我在这里遵循这个指南来帮助我parsing从第三方映射服务返回的JSON响应。

一切正常,除了第三方服务器返回的JSON响应与指南本身显示的有所不同。

简而言之,整个JSON响应的整体结构如下所示:

{ "directions": [....], "messages": [....], "routes": { "features": [ { "attributes": {....}, "geometry": { "paths": [....] } } ] } } 

这是实际的JSON查询url。

通过使用这一行代码,

 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]; 

我想知道是否有人可以更好地了解我应该如何以更优雅的方式去做这件事?

提前感谢!

你不能只用它作为JSON对象,因为它将作为JSON(普通string)工作,你需要parsing它,所以为了你的问题,你可以这样做直接去path

 NSArray *arr = [[[[jsonResponse objectForKey:@"routes"] objectForKey:@"features"] objectForKey:@"geometry"] objectForKey:@"paths"]; 

现在你可以从“arr”数组访问你的path数据

更新:

 NSArray *arr = [[[[[jsonResponse objectForKey:@"routes"] objectForKey:@"features"] objectAtIndex:0] objectForKey:@"geometry"] objectForKey:@"paths"]; 

作为要素元素是一个数组,所以先遍历数组然后转到它的元素