1

この住所を取得しようとしています = "8198 Snouffer School Rd, Gaithersburg, MD 20879, USA"

この 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

3 に答える 3

4

JSONオブジェクトではなく配列です。試す

NSString *address = [[Placemark objectAtIndex:0] objectForKey:@"address"]]; 
于 2012-04-27T13:17:51.397 に答える
2

目印エントリは、辞書ではなく配列を返すようです (角かっこを参照してください)。

PS: 変数には小文字の先頭文字を使用してください。そうしないと、クラスのように見えます:-)。

于 2012-04-27T13:18:58.900 に答える
0

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

すなわち

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

id code = [Status objectForKey:@ "code"];
id Placemark = [(NSDictionary *)[responseString JSONValue] objectForKey:@ "Placemark"];
id address = [Placemark objectForKey:@ "address"];

目的のキーを見つけます。

于 2012-04-27T13:27:18.820 に答える