2011-11-21 13 views
1

少しユーモア:オタクは常に、電話番号を取得する問題を抱えている:(このJSONレスポンスから電話番号を取得するにはどうすればよいですか?

を私はこのGoogleから電話番号を取得しようとしていますiOSのアプリケーションの開発、APIレスポンスを置く

{ 
    "html_attributions" : [], 
    "result" : { 
    "address_components" : [ 
     { 
     "long_name" : "48", 
     "short_name" : "48", 
     "types" : [ "street_number" ] 
     }, 
     { 
     "long_name" : "Pirrama Road", 
     "short_name" : "Pirrama Road", 
     "types" : [ "route" ] 
     }, 
     { 
     "long_name" : "Pyrmont", 
     "short_name" : "Pyrmont", 
     "types" : [ "locality", "political" ] 
     }, 
     { 
     "long_name" : "NSW", 
     "short_name" : "NSW", 
     "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
     "long_name" : "AU", 
     "short_name" : "AU", 
     "types" : [ "country", "political" ] 
     }, 
     { 
     "long_name" : "2009", 
     "short_name" : "2009", 
     "types" : [ "postal_code" ] 
     } 
    ], 
    "formatted_address" : "5/48 Pirrama Road, Pyrmont NSW, Australia", 
    "formatted_phone_number" : "(02) 9374 4000", 
    "geometry" : { 
     "location" : { 
     "lat" : -33.8669710, 
     "lng" : 151.1958750 
     } 
    }, 
    "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png", 
    "id" : "4f89212bf76dde31f092cfc14d7506555d85b5c7", 
    "international_phone_number" : "+61 2 9374 4000", 
    "name" : "Google Sydney", 
    "rating" : 4.60, 
    "reference" : "CnRlAAAAAfV6JIqSzL8Cf4VnXn0EaI1d5k3IPhdkEonq0MxiUbQFFSVuptVbXbNH4mrevb0bc7G8yWqTUv76i4KTuO_Wf3OrRHjCJJwzQ0mNLjbYGSVqy2eqyrgOUkl6S_sJfTbHzWZYrfPy7KZaet0mM5S6thIQJYuy5v_JD--ZxXEJLWTQRRoU5UaciXBBo89K-bce18Ii9RsEIws", 
    "types" : [ "store", "establishment" ], 
    "url" : "http://maps.google.com/maps/place?cid=10281119596374313554", 
    "vicinity" : "5/48 Pirrama Road, Pyrmont", 
    "website" : "http://www.google.com.au/" 
    }, 
    "status" : "OK" 
} 

標的です。。: "international_phone_number": "+61 2 9374 4000"


私のこれまでの努力、

NSDictionary *results = [responseString JSONValue]; 
    placeInfo = [results objectForKey:@"result"]; 
//Getting result details but than I am stuck how to get to that international phone number? 

すべての入力をいただければ幸いです!ありがとう

答えて

1

試してみてください。

NSString *phoneNumber = [placeInfo objectForKey:@"formatted_phone_number"]; 
NSLog(@"Her Phone Number: %@", phoneNumber); 
+0

を使用して余分な変数を作成しないでください。 NSString * phoneNumber = [results objectForKeyPath @ "result.formatted_phone_number"];を使用して余分な変数を作成しないようにしてください。 –

2

あなたは上記のダンプにレイアウトされた構造を持っています。最も外側の構造は辞書であり、辞書エントリのいくつかは配列を含み、いくつかは他の辞書を含む。 ({}は辞書を示します。[]は配列を示します)

「結果」は別の辞書を生成することがわかります。その辞書の要素の1つは「formatted_phone_number」です。それは文字列の形式で電話番号を含んでいます。

タマネギの層を剥がします。

1
placeInfo = [results objectForKey:@"result"]; 
NSString *internationalPhone = [placeInfo objectForKey:@"international_phone_number"]; 

はこれを試してみて、あなたがのNSLog行う際に電話番号が表示されるかどうかを確認し(@ "電話:%の@"、internationalPhone)を

0
NSError *parseError = nil; 

// Your test json as NSString 
NSString * json = @"{ \"html_attributions\" : [], \"result\" : { \"address_components\" : [ { \"long_name\" : \"48\", \"short_name\" : \"48\", \"types\" : [ \"street_number\" ] }, { \"long_name\" : \"Pirrama Road\", \"short_name\" : \"Pirrama Road\", \"types\" : [ \"route\" ] }, { \"long_name\" : \"Pyrmont\", \"short_name\" : \"Pyrmont\", \"types\" : [ \"locality\", \"political\" ] }, { \"long_name\" : \"NSW\", \"short_name\" : \"NSW\", \"types\" : [ \"administrative_area_level_1\", \"political\" ] }, { \"long_name\" : \"AU\", \"short_name\" : \"AU\", \"types\" : [ \"country\", \"political\" ] }, { \"long_name\" : \"2009\", \"short_name\" : \"2009\", \"types\" : [ \"postal_code\" ] } ], \"formatted_address\" : \"5/48 Pirrama Road, Pyrmont NSW, Australia\", \"formatted_phone_number\" : \"(02) 9374 4000\", \"geometry\" : { \"location\" : { \"lat\" : -33.8669710, \"lng\" : 151.1958750 } }, \"icon\" : \"http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png\", \"id\" : \"4f89212bf76dde31f092cfc14d7506555d85b5c7\", \"international_phone_number\" : \"+61 2 9374 4000\", \"name\" : \"Google Sydney\", \"rating\" : 4.60, \"reference\" : \"CnRlAAAAAfV6JIqSzL8Cf4VnXn0EaI1d5k3IPhdkEonq0MxiUbQFFSVuptVbXbNH4mrevb0bc7G8yWqTUv76i4KTuO_Wf3OrRHjCJJwzQ0mNLjbYGSVqy2eqyrgOUkl6S_sJfTbHzWZYrfPy7KZaet0mM5S6thIQJYuy5v_JD--ZxXEJLWTQRRoU5UaciXBBo89K-bce18Ii9RsEIws\", \"types\" : [ \"store\", \"establishment\" ], \"url\" : \"http://maps.google.com/maps/place?cid=10281119596374313554\", \"vicinity\" : \"5/48 Pirrama Road, Pyrmont\", \"website\" : \"http://www.google.com.au/\" }, \"status\" : \"OK\" }"; 

// Converting to data and stripping last 0x0 byte 
NSData* aweData = [json dataUsingEncoding:NSUTF8StringEncoding]; 
[aweData subdataWithRange:NSMakeRange(0, [aweData length] - 1)]; 

id jsonObject = [NSJSONSerialization JSONObjectWithData:aweData options:NSJSONReadingAllowFragments error:&parseError]; 

NSString* result = [[jsonObject objectForKey:@"result"] objectForKey:@"international_phone_number"]; // +61 2 9374 4000 
0

あなたは可能性も

NSString* phoneNumber = [results [email protected]"result.international_phone_number"]; 
関連する問題