在iPhone上提取JSON响应的特定部分

时间:2011-05-02 14:01:34

标签: iphone api maps

我正在考虑在我的应用程序中添加距离计算器。我一直在看谷歌的API,我似乎无法解码JSON。我已经设法用PHP这样做了。代码是:

substr($convertedtoarray['routes']['0']['legs']['0']['distance']['text'], 0, -3);

在iPhone上,我设法获得了JSON响应,但无法获得我想要的特定部分。

Json地址:http://maps.googleapis.com/maps/api/directions/json?origin=plymouth&destination=pl210bp&sensor=false

NSMutableDictionary *luckyNumbers = [responseString JSONValue];

[responseString release];
if (luckyNumbers != nil) {

    NSString *responseStatus = [luckyNumbers objectForKey:@"routes"];'

}

我从哪里开始?

任何帮助都会是很棒的欢呼声

2 个答案:

答案 0 :(得分:0)

最简单的方法是创建一个字典迭代器,并循环遍历luckynumbers字典中的子节点,您可以打印或调试,以查看这些子节点的键是什么,以及它们是什么对象类型

我使用这种技术几次来弄清楚我正在返回的XML文档的结构是什么样的。

答案 1 :(得分:0)

NSString *responseStatus = [[[[[[luckyNumbers objectForKey:@"routes"]objectAtIndex:0] objectForKey:@"legs"]objectAtIndex:0] objectForKey:@"distance"] objectForKey:@"text"];

非常丑陋,你可以在这样的单独对象中提取:

    NSArray *routesArray = [luckyNumbers objectForKey:@"routes"];
    NSDictionary *firstRoute = [routesArray objectAtIndex:0];
    NSArray *legsArray = [firstRoute objectForKey:@"legs"];
    NSDictionary *firstLeg = [legsArray objectAtIndex:0];
    NSDictionary *distanceDict = [firstLeg objectForKey:@"distance"];
    NSString *distanceText = [distanceDict objectForKey:@"text"];
祝你好运。