我已经编写了一些代码来解析我在Android程序中收到的Google Distance Matrix JSON响应。我感兴趣的唯一数据位于“distance”“value”节点中。
我的代码可以工作,但似乎有更简单的方法来实现这一点。距离值节点嵌套在JSON中的深层结构中,但是必须通过JSON的每一层才能获得所需字段吗?
以下是我的JSON响应:
我的代码可以工作,但似乎有更简单的方法来实现这一点。距离值节点嵌套在JSON中的深层结构中,但是必须通过JSON的每一层才能获得所需字段吗?
以下是我的JSON响应:
{
"destination_addresses" : [
"5660 Baltimore National Pike, Ingleside Shopping Center, Catonsville, MD 21228, USA"
],
"origin_addresses" : [ "Hilltop Cir, Baltimore, MD 21250, USA" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "3.1 mi",
"value" : 4922 <--THE FIELD I WANT TO EXTRACT
},
"duration" : {
"text" : "11 mins",
"value" : 666
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
以下是我用来提取距离值的代码:
private double extractDistance(JSONObject json) {
JSONArray rowsArray = null;
double distanceInMiles = -1;
try {
// Getting Array of Distance Matrix Results
rowsArray = json.getJSONArray("rows");
JSONObject rowsObject = rowsArray.getJSONObject(0);//only one element in this array
JSONArray elementsArray = rowsObject.getJSONArray("elements");
JSONObject elementsObject = elementsArray.getJSONObject(0);//only one element in this array
JSONObject distanceObject = elementsObject.getJSONObject("distance");
distanceInMiles = (distanceObject.getDouble("value"))/1609.344; //distance in meters converted to miles
}
catch (JSONException e) {
e.printStackTrace();
}
return distanceInMiles;
}
谢谢!