IPhone Google JSON Geocoing Парсинг - PullRequest
       8

IPhone Google JSON Geocoing Парсинг

0 голосов
/ 30 декабря 2011

Я не уверен, как анализировать вложенный вывод JSON.Я использую геокодирование Googles JSON и пытаюсь извлечь координаты.Я думаю, что мне нужен другой уровень анализа.Мой код, который не работает:

hostStr = [hostStr  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *hostURL = [NSURL URLWithString:hostStr];
NSString *jsonString = [[NSString alloc] initWithContentsOfURL:hostURL];

self.jsonArray = [jsonString JSONValue]; 

NSDictionary *coordinates = [self.jsonArray objectForKey:@"id:p1"];
NSLog(coordinates);
NSString *point = [coordinates objectForKey:@"Point"];
NSLog(point);

JSON:

{
"name": "11111 WASHINGTON AVE # 116 SAN PEDRO, CA 91111",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "11111 Washington Ave, San Pedro, CA 91111, USA",
"AddressDetails": {
"Accuracy" : 8,
 "Country" : {
  "AdministrativeArea" : {
     "AdministrativeAreaName" : "CA",
     "Locality" : {
        "LocalityName" : "San Pedro",
        "PostalCode" : {
           "PostalCodeNumber" : "91111"
        },
        "Thoroughfare" : {
           "ThoroughfareName" : "Washington Ave"
        }
     }
  },
  "CountryName" : "USA",
  "CountryNameCode" : "US"
 }
},
"ExtendedData": {
  "LatLonBox": {
    "north": 37.7026153,
    "south": 37.6999173,
    "east": -122.1393925,
    "west": -122.1420904
  }
},
"Point": {
  "coordinates": [ -122.1407313, 50.7012704, 0 ]
}
} ]
}

1 Ответ

1 голос
/ 30 декабря 2011

Похоже, вы не знаете, как добраться до вложенных объектов в разобранном JSON. Я предполагаю, что вы используете JBJson (ранее Json-Framework), чтобы получить эту категорию JSONValue на NSString, да? Если это так, он разбирает всю сделку, вам просто нужно пройтись по ней.

Первый полезный это онлайн визуализатор JSON: http://jsonviewer.stack.hu/
Вставьте туда свой необработанный JSON, чтобы увидеть всю его древовидную структуру.

Затем вы должны понимать, что вы собираетесь получить NSDictionary, в котором значения NSDictionaries и NSArrays. Так что это не "id: p1", в который вы копаетесь. Если вы хотите эти координаты, массив координат находится по пути Placemark [0] .Point.coordinates.

Это будет выглядеть как:

NSArray *placemarks = [self.jsonArray objectForKey:@"Placemark"];
NSDictionary *mark = [placemarks objectAtIndex:0];
NSDictionary *point = [mark objectForKey:@"Point"];
NSArray *coordinates = [point objectForKey:@"coordinates"];

Умный человек, который работал в Obj-c совсем недавно, чем я, возможно, смог бы пройтись по этой траектории или чему-то еще, но я сделал это таким образом, чтобы показать вам вложенные объекты, по которым вы действительно перемещаетесь здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...