简体   繁体   中英

Accessing elements in JSON array

I haven't worked much with JSON and I'm using Google Maps Distance Matrix API to get generate some data I'd like to use.

I'd like to pull the number 14147 from duration .

{
   "destination_addresses" : [ "Washington, DC, USA" ],
   "origin_addresses" : [ "New York, NY, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "226 mi",
                  "value" : 364089
               },
               "duration" : {
                  "text" : "3 hours 56 mins",
                  "value" : 14147
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

I've tried a few different things, here's what I tried last (data is just the array above):

String data = getOutputAsText(geoService);
JSONObject json = new JSONObject(data);
String duration = json.getJSONArray("rows").getString("duration");

Here's the console output:

 org.json.JSONException: JSONObject["duration"] not found

I made sure to look around before posting but I haven't found anything that has been able to help me with this particular problem.

I want to pass the value from duration to my own web service, which I can do, I just don't know how to extract the value. Thank you in advance!

First of all, please have a look at this answer. Using org.json you can do smth. like that:

JSONObject obj = new JSONObject("Content of your string here");
JSONArray rows = obj.getJSONArray("rows");
for (int i = 0; i < rows.length(); i++) {
 JSONArray elements = rows.getJSONObject(i).getJSONArray("elements");
  for(int j = 0; j < elements.length(); j++) {
   JSONObject element = elements.getJSONObject(j);
   JSONObject duration = element.getJSONObject("duration");
   int value = duration.getInt("value");
  }
 }

The code above has produced following output using your json String: 14147

PS You can make use of a library you wish. This one used here was purposed for the demonstrating.

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