我如何从json数组中获取JSONObject

时间:2012-10-29 13:48:46

标签: android arrays json

我是Android编程新手,我想知道如何从JSONarray中获取某个对象。

我的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
        },

我想从位置提取lat和lng。 我的代码是:

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

2 个答案:

答案 0 :(得分:2)

我想说你的json文件是错误的,但仔细看后我认为你的代码很糟糕:)我想它现在不会让你想要的。 在这种情况下,“结果”是JsonArray - 但是一个完整的JsonObjects数组,而不是它的属性! 完整JsonObject是对象 - address_components,format_address,geometry等。“location”也是“几何”对象的一部分。

如果您确定“result”数组中只有一个对象 - 您可以这样做:

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)

您好请参阅以下代码

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);
}