Java 值不为';t在读取JSON时存在

Java 值不为';t在读取JSON时存在,java,json,Java,Json,我的JSON { "destination_addresses" : [ "11/6, Dhandapani St, VGP Seethapathy Nagar, Velachery, Chennai, Tamil Nadu 600042, India" ], "origin_addresses" : [ "Magazine Road, St Thomas Mount, Chennai, Tamil Nadu 600016, India" ], "rows"

我的JSON

{
   "destination_addresses" : [
      "11/6, Dhandapani St, VGP Seethapathy Nagar, Velachery, Chennai, Tamil Nadu 600042, India"
   ],
   "origin_addresses" : [ "Magazine Road, St Thomas Mount, Chennai, Tamil Nadu 600016, India" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "6.6 km",
                  "value" : 6589
               },
               "duration" : {
                  "text" : "21 mins",
                  "value" : 1268
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}
我需要从这个JSON获取距离值

我得到的值一直到行,但当我尝试将此JSON对象转换为JSON数组时出现异常

在此之前的成功

JSONArray rows= (JSONArray) jsonObject.get("rows");
JSONObject elements= (JSONObject) rows.get(0);
Log.d("Eleemnrs",String.valueOf(elements));
当我执行下面的代码时,距离没有值

 JSONArray rows= (JSONArray) jsonObject.get("rows");
 JSONObject elements= (JSONObject) rows.get(0);
 elements.get("distance");
 Log.d("Eleemnrs",String.valueOf(elements));
JSONObject元素=(JSONObject)行。获取(0); 这一结果是:


如果您应该获取距离值,那么您应该首先获取(“元素”),然后获取JSONObject(0)。获取(“距离”)

在获取元素时,您没有使用对象。获取(“距离”)

您可以按如下方式修改代码,将距离对象放入JsonObject并从中读取所需的值

JSONArray rows= (JSONArray) jsonObject.get("rows");
JSONObject elements= (JSONObject) rows.get(0);
JsonObject distance = elements.get("distance"); 
Log.d("Distance text is ", distance.getString("text"));
Log.d("Distance value is ", distance.getInt("value"));

雕刻出答案

2019-07-06 17:28:59.523 10648-10648/com.example.newjourney I/System.out:…
也是JSON的一部分吗?如果没有,请删除。如果你问的是一个问题,最好不要介绍其他人,让其他人只关注你问的问题。
elements.get(“distance”)获取对象(因为它是一个对象,而不是一个数字),然后丢弃它。您可能希望将其存储在变量中。然后您可以从中获取
文本
,这就是您可以轻松记录的内容(分别是字符串和/或数字),您希望从距离对象中获取哪个值?“文本”或“值”?但我不知道如何获得element@subash它是一个嵌套构造。
JSONObject rows0=(JSONObject)rows.get(0)
然后
JSONArray elements=(JSONArray)rowsObj.get(“elements”)
。然后
JSONObject element0=(JSONObject)elements.get(0)
。然后
JSONObject distance=(JSONObject)element0.get(“distance”)
。您应该了解更多关于构建json的构造。
JSONArray rows= (JSONArray) jsonObject.get("rows");
JSONObject elements= (JSONObject) rows.get(0);
//Here you are not assigning the distance object to any variable. It is simply discarded
elements.get("distance"); 
Log.d("Eleemnts",String.valueOf(elements));
JSONArray rows= (JSONArray) jsonObject.get("rows");
JSONObject elements= (JSONObject) rows.get(0);
JsonObject distance = elements.get("distance"); 
Log.d("Distance text is ", distance.getString("text"));
Log.d("Distance value is ", distance.getInt("value"));
                    JSONArray rows= (JSONArray) jsonObject.get("rows");
                    JSONObject elements= (JSONObject) rows.get(0);
                    JSONArray one= (JSONArray) elements.get("elements");
                    JSONObject two=(JSONObject)one.get(0);
                    JSONObject three=(JSONObject)two.get("distance");
                    int finalvalue= (int) three.get("value");