Извлечение определенной части JSON respose на iPhone

#iphone #api #maps

#iPhone #API #Карты

Вопрос:

Я рассматриваю возможность добавления калькулятора расстояний в мое приложение. Я просматривал API Google, но, похоже, я не могу декодировать JSON. Мне удалось сделать это с помощью PHP. Код для этого был:

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

На iPhone мне удалось получить ответ JSON, но я не могу получить конкретную его часть, которую я хочу.

Адрес Json: http://maps.googleapis.com/maps/api/directions/json?origin=plymouthamp;destination=pl210bpamp;sensor=false

 NSMutableDictionary *luckyNumbers = [responseString JSONValue];

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

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

}
  

Куда мне идти дальше?

Любая помощь была бы отличным приветствием

Ответ №1:

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

Удачи.

Ответ №2:

Проще всего было бы создать итератор словаря и перебирать, какие дочерние элементы есть в словаре luckynumbers, вы можете распечатать или отладить, чтобы увидеть, каковы ключи для этих дочерних элементов и к каким типам объектов они относятся.

Я использовал этот метод несколько раз, чтобы выяснить, на что была похожа структура возвращаемого мне XML-документа.