如何从JSONARRAY中的JSONOBJECT获取值?

use*_*679 2 android json android-json

我正在申请,我需要显示所有的ATM.我从谷歌api获取数据,但我无法获取所有数据.我想要获取latitude,longitude但是当我获取数据时,我只获得一个值.

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();
        }
Run Code Online (Sandbox Code Playgroud)

Rag*_*dan 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
Run Code Online (Sandbox Code Playgroud)

然后

// this is right   
JSONArray data = jObject.getJSONArray("results");
Run Code Online (Sandbox Code Playgroud)

之后

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

   }
Run Code Online (Sandbox Code Playgroud)