2012-04-27 10 views
1

このjsonのリクエストでこのアドレス= "8198 Snouffer School Rd、Gaithersburg、MD 20879、USA"iphone:jsonのリクエストからアドレスを取得するには?

を取得しようとしましたが、成功しませんでした。

{ 
    "name": "39.165110,-77.168550", 
    "Status": { 
    "code": 200, 
    "request": "geocode" 
    }, 
    "Placemark": [ { 
    "id": "p1", 
    "address": "8198 Snouffer School Rd, Gaithersburg, MD 20879, USA", 
    "AddressDetails": { 
    "Accuracy" : 8, 
    "Country" : { 
     "AdministrativeArea" : { 
     "AdministrativeAreaName" : "MD", 
     "Locality" : { 
      "LocalityName" : "Gaithersburg", 
      "PostalCode" : { 
       "PostalCodeNumber" : "20879" 
      }, 
      "Thoroughfare" : { 
       "ThoroughfareName" : "Snouffer School Rd" 
      } 
     } 
     }, 
     "CountryName" : "USA", 
     "CountryNameCode" : "US" 
    } 
}, 
    "ExtendedData": { 
     "LatLonBox": { 
     "north": 39.1661825, 
     "south": 39.1634846, 
     "east": -77.1666884, 
     "west": -77.1693864 
     } 
    }, 
    "Point": { 
     "coordinates": [ -77.1685611, 39.1650977, 0 ] 
    } 
    } ] 
} 

ステータスからコードを抽出しましたが、アドレスの抽出方法を理解できませんでした。

NSArray* Status = [(NSDictionary*)[responseString JSONValue] objectForKey:@"Status"]; 

NSString *code = [Status objectForKey:@"code"];    
NSArray* Placemark = [(NSDictionary*)[responseString JSONValue] objectForKey:@"Placemark"];  
NSString *address = [Placemark objectForKey:@"address"]; // got error at this line. 

答えて

4

これはJSONオブジェクトではない配列です。 目印エントリは配列ではなく、辞書を(角括弧を参照してください?)を返すように見えます

NSString *address = [[Placemark objectAtIndex:0] objectForKey:@"address"]]; 
+2

明らかに、Placemarkが空の配列でないことと、最初の要素が実動コードのNSDictionaryであることを確認してください。私はしばしばこのマクロを使います: '#define SAFE_DICTIONARY(dict)([dict isKindOfClass:[NSDictionary class]]?dict:nil)' – jessecurry

2

を試してみてください。

PS:変数に小さな開始文字を使用してください。そうでなければ、クラス:-)のように見えます。

0

@Azhar: - これを試してみてください - ID

すなわち

IDステータス= [(NSDictionaryの*)[responseString JSONValue] objectForKey: "ステータス" @]。

idコード= [ステータスobjectForKey:@ "コード"];
id Placemark = [(NSDictionary *)[responseString JSONValue] objectForKey:@ "Placemark"];
idアドレス= [目印objectForKey:@ "アドレス"];

を入力し、目的のキーを見つけます。

関連する問題