1

I'm fairly new to dealing with json, currently working with Google Places API to get restaurant details. I've already tried to decode it by followig articles such as

but it has been of no use as my json string is quite complex as far as my understanding is concerned

I'm getting json via Volley API using this particular function

public String getVolleyURL() {
        String query = null;
//            query = SEARCH_QUERY + "&location=" + lat + "," + lon + "&radius=" + radius;
            query = "&location=" + lat  + "," +longg + "&radius=" + radius;

        query = SEARCH_URL + query + "&key=" + GOOGLE_PLACE_KEY;
        Log.wtf(TAG, "Volley_URL = " + query);
        return query;
    }

which returns the following Json string

{
   "html_attributions" : [],
   "results" : [
      {
         "formatted_address" : "Metropolitan Life North Building, 11 Madison Ave, New York, NY 10010, Verenigde Staten",
         "geometry" : {
            "location" : {
               "lat" : 40.74169,
               "lng" : -73.9872068
            },
            "viewport" : {
               "northeast" : {
                  "lat" : 40.74190884999999,
                  "lng" : -73.98716930000001
               },
               "southwest" : {
                  "lat" : 40.74161705,
                  "lng" : -73.98731529999999
               }
            }
         },
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "f758e0d7f68c659682afdb4b1c0749e7d3623839",
         "name" : "Eleven Madison Park",
         "opening_hours" : {
            "open_now" : false,
            "weekday_text" : []
         },
         "photos" : [
            {
               "height" : 1200,
               "html_attributions" : [
                  "\u003ca href=\"https://maps.google.com/maps/contrib/102127816559576392189/photos\"\u003eTammy Liu\u003c/a\u003e"
               ],
               "photo_reference" : "CoQBdwAAACwNCAsIpt6Li3P49bVZfSX8yDOA3QTsPsgc52jYRliBNBEqboYcE409Wf-ZYIae__HbKvaW1Xed-lnKjr0dus2Gbnn1Y8PTH_7HX89aiDo4lTASyuU8N7DxHndhiAXPqY-ZKozOzLcSYA7tP50_-caFILD36WpSQJIEWSPu3cgzEhCQ7c2ltmabHZsR88s-gc8kGhShA5LDudy3ZvcDAjalj9yn_KR7bw",
               "width" : 1800
            }
         ],
         "place_id" : "ChIJEWbXz6ZZwokRLKmKrtPfVFY",
         "price_level" : 4,
         "rating" : 4.5,
         "reference" : "CnRmAAAAWyhPb38cmZ765RA05cPPZkYqZbRGtDOOQi8d5yNuwCrvezX4liYo6DFNOdr8c-v2wwwnD9OqODteeO9oto9wNGI3F0ORvjKYCAwaNwGOMc2x8JYUljND4XmG41s0d44OXWxzloUQgRubjuFEDpTkhBIQAeucZk-7vCj6xP76Mkwt2RoUMaR7pkhrawYFttRUBIYellvYoJc",
         "types" : [ "restaurant", "bar", "food", "point_of_interest", "establishment" ]
      }
   ],
   "status" : "OK"
}

Any sort of help would REALLY be appreciated! Thank you

Community
  • 1
  • 1
Aimal Khan
  • 1,009
  • 1
  • 12
  • 25

3 Answers3

0

Have you tried this? JSON is a very common, standard format so there are tons of resources for interfacing with them. The "rules" of JSONs can be seen here.

Community
  • 1
  • 1
Danny Buonocore
  • 3,731
  • 3
  • 24
  • 46
0

suppose if u want to decode formatted address from json response try this:

Things to note: formatted address address comes under "results" key in your json response

JSONObject reader = new JSONObject(query);

JSONObject sys = reader.getJSONObject("results");

address = sys.getString("formatted_address");

so finally address will have value "Metropolitan Life North Building, 11 Madison Ave"

Albin Antony
  • 775
  • 3
  • 8
  • 21
0

This code should help you to parse data from google places api. happy code !

 String reference;
 String vicinity;
 String rating;
JSONObject reader = new JSONObject(response);
JSONArray data = reader.getJSONArray("results");           
for (int i = 0; i < data.length(); i++) {
JSONObject place = (JSONObject) data.get(i);
 String idplace = place.getString("id");
 String name = place.getString("name");
 Double lat = place.getJSONObject("geometry").getJSONObject("location").getDouble("lat");
  Double lng = place.getJSONObject("geometry").getJSONObject("location").getDouble("lng");
 if(place.has("photos")) {
    reference = place.getJSONArray("photos").getJSONObject(0).getString("photo_reference");
                        }
                        else
                        {

                            reference =null;
                        }
                        if(place.has("vicinity")) {
                            //it has it, do appropriate processing
                             vicinity = place.getString("vicinity");
                        }
                        else
                        {

                            vicinity =null;
                        }

                        if(place.has("rating")) {
                            //it has it, do appropriate processing
                            rating = String.valueOf(place.getDouble("rating"));
                        }
                        else
                        {

                            rating =null;
                        }
                        // String vicinity = place.getString("vicinity");
                        //String rating = String.valueOf(place.getDouble("rating"));

                } catch (JSONException e) {
                    e.printStackTrace();
                }

        }
MedAmine.Rihane
  • 1,193
  • 10
  • 17