2013-01-16 51 views
0

我在我的Android應用程序中使用this link。我必須從地址組成的JSON數組中檢索長名稱密鑰的值。如何從JSON嵌套數組中檢索值?

以下是JSON結構:

 { 
    "results":[ 
     { 
     "address_components":[ 
      { 
       "long_name":"285", 
       "short_name":"285", 
       "types":[ 
        "street_number" 
       ] 
      }, 
      { 
       "long_name":"Bedford Avenue", 
       "short_name":"Bedford Ave", 
       "types":[ 
        "route" 
       ] 
      }, 
      { 
       "long_name":"Williamsburg", 
       "short_name":"Williamsburg", 
       "types":[ 
        "neighborhood", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"New York", 
       "types":[ 
        "locality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"11211", 
       "short_name":"11211", 
       "types":[ 
        "postal_code" 
       ] 
      } 
     ], 
     "formatted_address":"285 Bedford Avenue, Brooklyn, NY 11211, USA", 
     "geometry":{ 
      "location":{ 
       "lat":40.71412890, 
       "lng":-73.96140740 
      }, 
      "location_type":"ROOFTOP", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.71547788029149, 
        "lng":-73.96005841970849 
       }, 
       "southwest":{ 
        "lat":40.71277991970850, 
        "lng":-73.96275638029151 
       } 
      } 
     }, 
     "types":[ 
      "street_address" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Grand St - Bedford Av", 
       "short_name":"Grand St - Bedford Av", 
       "types":[ 
        "bus_station", 
        "transit_station", 
        "establishment" 
       ] 
      }, 
      { 
       "long_name":"Williamsburg", 
       "short_name":"Williamsburg", 
       "types":[ 
        "neighborhood", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"11211", 
       "short_name":"11211", 
       "types":[ 
        "postal_code" 
       ] 
      } 
     ], 
     "formatted_address":"Grand St - Bedford Av, Brooklyn, NY 11211, USA", 
     "geometry":{ 
      "location":{ 
       "lat":40., 
       "lng":-73.9611510 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.71566998029149, 
        "lng":-73.95980201970849 
       }, 
       "southwest":{ 
        "lat":40.71297201970850, 
        "lng":-73.96249998029151 
       } 
      } 
     }, 
     "types":[ 
      "bus_station", 
      "transit_station", 
      "establishment" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Grand St - Bedford Av", 
       "short_name":"Grand St - Bedford Av", 
       "types":[ 
        "bus_station", 
        "transit_station", 
        "establishment" 
       ] 
      }, 
      { 
       "long_name":"Williamsburg", 
       "short_name":"Williamsburg", 
       "types":[ 
        "neighborhood", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"11211", 
       "short_name":"11211", 
       "types":[ 
        "postal_code" 
       ] 
      } 
     ], 
     "formatted_address":"Grand St - Bedford Av, Brooklyn, NY 11211, USA", 
     "geometry":{ 
      "location":{ 
       "lat":40.7146840, 
       "lng":-73.9615630 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.71603298029149, 
        "lng":-73.96021401970850 
       }, 
       "southwest":{ 
        "lat":40.71333501970850, 
        "lng":-73.96291198029151 
       } 
      } 
     }, 
     "types":[ 
      "bus_station", 
      "transit_station", 
      "establishment" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Bedford Av - Grand St", 
       "short_name":"Bedford Av - Grand St", 
       "types":[ 
        "bus_station", 
        "transit_station", 
        "establishment" 
       ] 
      }, 
      { 
       "long_name":"Williamsburg", 
       "short_name":"Williamsburg", 
       "types":[ 
        "neighborhood", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"11211", 
       "short_name":"11211", 
       "types":[ 
        "postal_code" 
       ] 
      } 
     ], 
     "formatted_address":"Bedford Av - Grand St, Brooklyn, NY 11211, USA", 
     "geometry":{ 
      "location":{ 
       "lat":40.714710, 
       "lng":-73.9609990 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.71605898029150, 
        "lng":-73.95965001970849 
       }, 
       "southwest":{ 
        "lat":40.71336101970850, 
        "lng":-73.96234798029150 
       } 
      } 
     }, 
     "types":[ 
      "bus_station", 
      "transit_station", 
      "establishment" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Williamsburg", 
       "short_name":"Williamsburg", 
       "types":[ 
        "neighborhood", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"New York", 
       "types":[ 
        "locality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"Williamsburg, Brooklyn, NY, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":40.72517730, 
        "lng":-73.9364980 
       }, 
       "southwest":{ 
        "lat":40.69793290, 
        "lng":-73.96984499999999 
       } 
      }, 
      "location":{ 
       "lat":40.70644610, 
       "lng":-73.95361629999999 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.72517730, 
        "lng":-73.9364980 
       }, 
       "southwest":{ 
        "lat":40.69793290, 
        "lng":-73.96984499999999 
       } 
      } 
     }, 
     "types":[ 
      "neighborhood", 
      "political" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"11211", 
       "short_name":"11211", 
       "types":[ 
        "postal_code" 
       ] 
      }, 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"New York", 
       "types":[ 
        "locality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"Brooklyn, NY 11211, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":40.72800890, 
        "lng":-73.92072990 
       }, 
       "southwest":{ 
        "lat":40.69763590, 
        "lng":-73.97616690 
       } 
      }, 
      "location":{ 
       "lat":40.71800360, 
       "lng":-73.96537150000002 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.72800890, 
        "lng":-73.92072990 
       }, 
       "southwest":{ 
        "lat":40.69763590, 
        "lng":-73.97616690 
       } 
      } 
     }, 
     "types":[ 
      "postal_code" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"Kings, NY, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":40.7394460, 
        "lng":-73.83336509999999 
       }, 
       "southwest":{ 
        "lat":40.56956370, 
        "lng":-74.04397190 
       } 
      }, 
      "location":{ 
       "lat":40.65287620, 
       "lng":-73.95949399999999 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.7394460, 
        "lng":-73.83336509999999 
       }, 
       "southwest":{ 
        "lat":40.56956370, 
        "lng":-74.04397190 
       } 
      } 
     }, 
     "types":[ 
      "administrative_area_level_2", 
      "political" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"Brooklyn", 
       "short_name":"Brooklyn", 
       "types":[ 
        "sublocality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"New York", 
       "types":[ 
        "locality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"Kings", 
       "short_name":"Kings", 
       "types":[ 
        "administrative_area_level_2", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"Brooklyn, NY, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":40.7394460, 
        "lng":-73.83336509999999 
       }, 
       "southwest":{ 
        "lat":40.5510420, 
        "lng":-74.056630 
       } 
      }, 
      "location":{ 
       "lat":40.650, 
       "lng":-73.950 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.7394460, 
        "lng":-73.83336509999999 
       }, 
       "southwest":{ 
        "lat":40.5510420, 
        "lng":-74.056630 
       } 
      } 
     }, 
     "types":[ 
      "sublocality", 
      "political" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"New York", 
       "short_name":"New York", 
       "types":[ 
        "locality", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"New York, NY, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":40.91524140, 
        "lng":-73.70027209999999 
       }, 
       "southwest":{ 
        "lat":40.4959080, 
        "lng":-74.25908790 
       } 
      }, 
      "location":{ 
       "lat":40.71435280, 
       "lng":-74.00597309999999 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":40.91524140, 
        "lng":-73.70027209999999 
       }, 
       "southwest":{ 
        "lat":40.4959080, 
        "lng":-74.25573489999999 
       } 
      } 
     }, 
     "types":[ 
      "locality", 
      "political" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"New York", 
       "short_name":"NY", 
       "types":[ 
        "administrative_area_level_1", 
        "political" 
       ] 
      }, 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"New York, USA", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":45.0158650, 
        "lng":-71.85626990 
       }, 
       "southwest":{ 
        "lat":40.4959080, 
        "lng":-79.76214379999999 
       } 
      }, 
      "location":{ 
       "lat":43.29942850, 
       "lng":-74.21793260000001 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":45.01261130, 
        "lng":-71.85626990 
       }, 
       "southwest":{ 
        "lat":40.4959080, 
        "lng":-79.76214379999999 
       } 
      } 
     }, 
     "types":[ 
      "administrative_area_level_1", 
      "political" 
     ] 
     }, 
     { 
     "address_components":[ 
      { 
       "long_name":"United States", 
       "short_name":"US", 
       "types":[ 
        "country", 
        "political" 
       ] 
      } 
     ], 
     "formatted_address":"United States", 
     "geometry":{ 
      "bounds":{ 
       "northeast":{ 
        "lat":71.3898880, 
        "lng":-66.94976079999999 
       }, 
       "southwest":{ 
        "lat":18.91106420, 
        "lng":172.45469660 
       } 
      }, 
      "location":{ 
       "lat":37.090240, 
       "lng":-95.7128910 
      }, 
      "location_type":"APPROXIMATE", 
      "viewport":{ 
       "northeast":{ 
        "lat":49.380, 
        "lng":-66.940 
       }, 
       "southwest":{ 
        "lat":25.820, 
        "lng":-124.390 
       } 
      } 
     }, 
     "types":[ 
      "country", 
      "political" 
     ] 
     } 
    ], 
    "status":"OK" 
} 

我的Java源代碼:

Source Code with Output Link

我越來越印度,但我必須打印瓦桑特古寺輸出。

任何人都可以幫助我實現這一點的代碼段?

任何幫助,將不勝感激。

回答

2

獲取long_name從目前的JSON字符串爲:

JSONObject json=new JSONObject("YOUR_JSON_STRING"); 

JSONArray ja = json.getJSONArray("results"); 

for (int i = 0; i < ja.length(); i++) { 

    JSONObject jo = ja.getJSONObject(i); 

    JSONArray jaa = jo.getJSONArray("address_components"); 
    for (int j = 0; j < jaa.length(); j++) { 

    JSONObject jotwo = jaa.getJSONObject(j); 

     //long_name 
     String str_long_name=jotwo.getString("long_name"); 
    } 

} 
+0

您的代碼工作得很好。但是我輸出了印度,我必須印刷Vasant Vihar(地區名稱)。我用我的源代碼和輸出鏈接編輯了我的問題,請查看。 –

+0

@ManishAndroid:給我你的JSON鏈接,因爲我認爲你得到了不同的JSON字符串 –

+0

查看此鏈接: https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding 在這個頁面上,有一個我使用的JSON網址。 –

4

我寧願建議使用GSON解析成豆。你可以選擇你感興趣的領域。

這裏是豆我建議你使用:

響應類:

public class Response { 
private Result [] results; 
// getters and setters(optional) 
} 

結果類:

public class Result{ 
private AddressComponent[] addressComponents; 
// getters and setters(optional) 
} 

地址組件類:

public class AddressComponent { 
private String longName; 
private String shortName; 
private String [] types; 
// getters and setters (optional) 
} 

這裏是你如何解析:

String str = "<the ugly json you pasted>"; 
Gson gson = new GsonBuilder() 
    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) 
    .create(); 

GSON默認忽略不具有相應的Java領域的所有JSON屬性。

響應響應= gson.fromJson(str,Response.class);從現在

AddressComponent [] AddressComponents = response.getResults()[1].getAddressComponent(); 

確定您所使用的對象,如你所願:

而且你訪問感興趣的領域這樣。

+1

+1 - 歡迎來到10K :) –