【发布时间】:2017-12-18 20:11:15
【问题描述】:
我正在尝试读取此 JSON 响应的 distance 和 duration 字段
{
"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);
但代码导致:
线程“main”java.lang.ClassCastException 中的异常:org.json.simple.JSONObject 无法转换为 org.json.simple.JSONArray
我该如何解决?还有比这更简单的方法吗? 谢谢
【问题讨论】:
-
distanceObj.get("distance")返回JSONObject。
标签: java json google-maps-api-3