从JSON对象和数组获取数据

时间:2018-07-29 19:36:46

标签: android arrays json object

正在寻找解决方案。 Java代码示例:

public void loadPositions(JSONObject result){
    try {
        JSONObject jObject = result.getJSONObject("points");
        Iterator<String> keys = jObject.keys();
        while (keys.hasNext()) {
            String key = keys.next();
            Log.v("list key", key);

            if(jObject.get(key) instanceof JSONObject) {
                JSONObject innerJObject = jObject.getJSONObject(key);
                String lat = innerJObject.getString("lat");
                String lon = innerJObject.getString("lon");

                Log.i("details", "lat = " + lat + ", " + "lon = " + lon);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }


}

JSON数据:

{  
   "points":{  
      "C50D15525":[  
         {  
            "lat":"51.643257329609156",
            "lon":"17.798963651975885"
         },
         {  
            "lat":"51.643257329609156",
            "lon":"17.798963651975885"
         }
      ],
      "BFFCDE4AF":[  
         {  
            "lat":"51.6434779",
            "lon":"17.7993028"
         },
         {  
            "lat":"51.6434779",
            "lon":"17.7993028"
         },
         {  
            "lat":"51.6434779",
            "lon":"17.7993028"
         }
      ]
   }
}

上面的代码只给我列出密钥,但是我希望从“ BFFCDE4AF”和“ C50D15525”等许多方面来实现LAT和LON。我已经尝试了很多方法... JSON数据有效。

2 个答案:

答案 0 :(得分:0)

您可以通过此实现 例如 points.C50D15525 [“ lat”]

但是您需要通过应用任何循环和关联概念来提取json。

答案 1 :(得分:0)

在“点”对象中,您的JSON有一个Array对象,您需要使用getJSONArray()方法获得该对象。遍历JSONArray并获取“ lat”和“ lon”对象。

public void loadPositions(JSONObject result){
    try {
        JSONObject jObject = result.getJSONObject("points");
        Iterator<String> keys = jObject.keys();
        while (keys.hasNext()) {
            String key = keys.next();
            Log.v("list key", key);

            JSONArray jArray = jObject.getJSONArray(key);
            for (int i=0; i < jArray.length(); i++){
                JSONObject obj = jArray.getJSONObject(i);
                String lat = obj.optString("lat", "NA"));
                String lon = obj.optString("lon", "NA"));
                Log.i("details","key = " + key + " coor count = " + i + " lat = " + lat + ", " + "lon = " + lon);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

由于我尚未对此进行测试,请让我知道是否有任何问题。