如何从JSONARRAY中的JSONOBJECT获取值?

时间:2017-07-07 11:28:07

标签: android json android-json

我正在处理我需要显示所有ATM的应用程序。我从谷歌api获取数据,但我无法获取所有数据。我想要抓取latitudelongitude但是当我获取数据时,我只获得一个值。

String url = "https://maps.googleapis.com/maps/api/place/radarsearch/json?location=23.308003,81.3275914&radius=5000&type=atm&key=AIzaSyCYZoSkxHC_Exym4YBWvXZXwMyJA7dzEB4";
        try {
            JSONObject jObject = new JSONObject(request(url));
            String jj = jObject.getString("status");

            JSONArray data = jObject.getJSONArray("results");

            location = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map;

            for(int i = 0; i < data.length(); i++){
                JSONObject c = data.getJSONObject(i);
                map = new HashMap<String, String>();

            JSONObject geometry = c.getJSONObject("geometry");
            JSONObject locate = geometry.getJSONObject("location");
            String lat = locate.getString("lat");
            String lng = locate.getString("lng");
            Log.e("Data", lat+"--"+lng);
            //map.put("LocationID", c.getString("id"));
            //map.put("placeId",c.getString("place_id"));
            //location.add(map);


            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:6)

我建议你去看一些解析教程。之后你可以让我们像gson或jackson这样的图书馆来解析你的json。现在很多人不会自己编写json解析代码。

一旦你理解了json结构,你就应该能够自己解析它。

你的json

"results": [ // array
    {        //  jsonobject
        "geometry": {  // geometry jsonobject
            "location": {   // location jsonobject
                // values
                "lat": 23.3085793, 
                "lng": 81.353116
            }
        },
        ... // the rest of the json

然后

// this is right   
JSONArray data = jObject.getJSONArray("results");

之后

   for(int i = 0; i < data.length(); i++){
       JSONObject c = data.getJSONObject(i);
       JSONObject geometry = c.getJSONObject("geometry"); 
       JSONObject location = geometry.getJSONObject("location");
       String lat = location.getString("lat");
       String lng = location.getString("lng"); 

       Log.d("Location->"," "+lat+" "+lng);
       // now do what you want.  
       // You probably meant to do
       map = new HashMap<String, String>();
       map.put("lat",lat);
       map.pt("lng",lng);
       location.add(map);

   }