访问JSON数组中的元素

时间:2017-11-14 15:53:57

标签: java arrays json google-api

我没有使用JSON,我正在使用谷歌地图距离矩阵API来生成一些我想要使用的数据。

我想从持续时间中提取数字 14147

{
   "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"
}

我尝试了一些不同的东西,这是我上次尝试的(数据就是上面的数组):

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

这是控制台输出:

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

我确保在发布之前环顾四周,但我找不到能帮助我解决这个问题的任何事情。

我想将值从持续时间传递给我自己的Web服务,我可以这样做,我只是不知道如何提取值。提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先,请查看this回答。使用org.json你可以做到smth。那样:

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

上面的代码使用你的json字符串生成了以下输出:14147

P.S。您可以使用您想要的图书馆。这里使用的是用于演示的目的。