-1

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

我想从位置中提取经纬度和经度。我的代码是:

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

2 回答 2

2

我想说你的 json 文件是错误的,但仔细观察后我认为你的代码很糟糕 :) 我想它现在没有给你想要的东西。在这种情况下,“结果”是 JsonArray - 但是一个完整的 JsonObjects 数组,而不是它的属性!完整的 JsonObject 是具有地址组件、格式地址、几何等的对象。“位置”也是“几何”对象的一部分。

当您确定“结果”数组中只有一个对象时 - 您可以执行以下操作:

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 个对象时 - 我想你需要遍历它们并找到你需要的东西。

于 2012-10-29T14:10:19.603 回答
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);
}
于 2012-10-29T13:54:33.593 回答