#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-документа.