简体   繁体   中英

how to fetch value from JSONOBJECT inside JSONARRAY?

I am working on application in which i need to show all the ATM. I am fetching the data from google api, but i am not able to fetch all the data. I want to fetch latitude and longitude but when I am fetch the data I am getting only one value.

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

I will suggest you to go through some parsing tutorial. Later you can us libraries like gson or jackson to parse you json. Now lot of people don't write json parsing code themselves.

Once you understand the json structure you should be able to parse it yourself.

Your json

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

Then

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

After that

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

   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM