Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java解析json fro distancematrix google api_Java_Json_Google Maps Api 3 - Fatal编程技术网

java解析json fro distancematrix google api

java解析json fro distancematrix google api,java,json,google-maps-api-3,Java,Json,Google Maps Api 3,我试图读取这个JSON响应的距离和持续时间字段 { "destination_addresses" : [ "342 E 110th St, New York, NY 10029, USA" ], "origin_addresses" : [ "303 E 43rd St, New York, NY 10017, USA" ], "rows" : [ { "elements" : [ { "d

我试图读取这个JSON响应的距离和持续时间字段

 {
   "destination_addresses" : [ "342 E 110th St, New York, NY 10029, USA" ],
   "origin_addresses" : [ "303 E 43rd St, New York, NY 10017, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "6.9 km",
                  "value" : 6853
               },
               "duration" : {
                  "text" : "15 mins",
                  "value" : 926
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}
这是我的密码

try {           
   InputStream is = new URL("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=40.750404,-73.971489&destinations=40.79248,-73.938805").openStream();      
   BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
   json = readAll(rd);
} catch(Exception e) {
}
JSONParser parser = new JSONParser();

Object obj = parser.parse(json);
JSONObject jb = (JSONObject) obj;

JSONArray jsonObject1 = (JSONArray) jb.get("rows");
JSONObject jsonObject2 = (JSONObject)jsonObject1.get(0);
JSONArray jsonObject3 = (JSONArray)jsonObject2.get("elements");
JSONObject distanceObj = (JSONObject) jsonObject3.get(0);
JSONArray distanceArr = (JSONArray)distanceObj.get("distance");

double distance_text= (double) distanceArr.get(0); 
System.out.println( "distance = "+distance_text);
但代码的结果是:

线程主java.lang.ClassCastException中的异常:org.json.simple.JSONObject无法转换为org.json.simple.JSONArray

我怎样才能修好它?有比这更简单的方法吗? 谢谢

这里的问题是距离不是数组

JSONArray jsonObject1 = (JSONArray) jb.get("rows");
JSONObject jsonObject2 = (JSONObject)jsonObject1.get(0);
JSONArray jsonObject3 = (JSONArray)jsonObject2.get("elements");
JSONObject elementObj = (JSONObject) jsonObject3.get(0);
JSONObject distanceObj = (JSONObject)elementObj.get("distance");
String distance = distanceObj.getString("text");
如果需要double,则需要删除字符串的km部分,然后对其进行解析

例如:

distance = distance.replace(" km", "").trim();
double value = Double.parseDouble(distance);
GetDistanceObj.getdistance返回JSONObject。