2012-10-29 51 views
-1

我是新來的android編程,我想知道如何從JSONarray獲得某個對象。我怎麼能從JSON數組中獲得JSONObject

我的JSON是這樣的:

{"results" : [ 
    { 
    "address_components" : [ 
     { 
      "long_name" : "Contern", 
      "short_name" : "Contern", 
      "types" : [ "locality", "political" ] 
     }, 

     { 
      "long_name" : "Luxembourg", 
      "short_name" : "Luxembourg", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 

     { 
      "long_name" : "Luxembourg", 
      "short_name" : "LU", 
      "types" : [ "country", "political" ] 
     } 
    ], 

    "formatted_address" : "Contern, Luxembourg", 

    "geometry" : { 
     "bounds" : { 
      "northeast" : { 
       "lat" : 49.621830, 
       "lng" : 6.302790 
      }, 

      "southwest" : { 
       "lat" : 49.56759010, 
       "lng" : 6.195380 
      } 
     }, 

     "location" : { 
      "lat" : 49.58515930, 
      "lng" : 6.2274880 
     }, 

,我想提取位置的緯度和經度。 我的代碼是:

arr = json.getJSONArray("results"); 
     JSONObject location=arr.getJSONObject(4); 
     double lng = location.getDouble("lng"); 
     double lat = location.getDouble("lat"); 
+1

你現在得到什麼和期待什麼? – RvdK

+0

請發佈您的整個json字符串。 –

回答

0

你好請參閱下面的代碼

JSON字符串

{ 
"result": "success", 
"countryCodeList": 
[ 
    {"countryCode":"00","countryName":"World Wide"}, 
    {"countryCode":"kr","countryName":"Korea"} 
] 
} 

這裏下面我取各國詳細

JSONObject json = new JSONObject(jsonstring); 
JSONArray nameArray = json.names(); 
JSONArray valArray = json.toJSONArray(nameArray); 

JSONArray valArray1 = valArray.getJSONArray(1); 

valArray1.toString().replace("[", ""); 
valArray1.toString().replace("]", ""); 

int len = valArray1.length(); 

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

Country country = new Country(); 
JSONObject arr = valArray1.getJSONObject(i); 
country.setCountryCode(arr.getString("countryCode"));       
country.setCountryName(arr.getString("countryName")); 
arrCountries.add(country); 
} 
2

我想說的話,你的JSON文件是錯誤的,但經過仔細觀察後,我認爲你的代碼不好:)我想它不會給你想要你現在想要的。 在這種情況下,「結果」是JsonArray - 但是是一個完整的JsonObjects數組,而不是它的屬性! 完整JsonObject是具有 - address_components,format_address,幾何等的對象。「location」也是「geometry」對象的一部分。

當你肯定會有在「結果」數組對象只有一個 - 你可以這樣做:

arr = json.getJSONArray("results"); 
if (arr.length() > 0){ 
    JSONObject resultObject = arr.getJSONObject(0); 
    JSONObject geometry = resultObject.getJSONObject("geometry"); 
    JSONObject location = geometry.getJSONObject("location"); 
    double lng = location.getDouble("lng"); 
    double lat = location.getDouble("lat"); 
} 

當你在結果超過1個對象 - 我想你需要循環他們和找到你需要的東西。

+0

不錯的工作..上帝的答案! – MKJParekh

相關問題