gpt4 book ai didi

java - 从 google maps DistanceMatrix api 在 android 中解析 JSON

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:20:14 24 4
gpt4 key购买 nike

我是 android 开发的新手,也是 JSON 的新手。我正在使用谷歌地图距离矩阵 api。我相信我已将 JSON 下载到 JSONObject 中。(我从另一篇文章中窃取了代码)。但是我似乎无法正确解析 JSON。我已经为此工作了几天,完全被难住了。我在下面对谷歌进行了以下调用

https://maps.googleapis.com/maps/api/distancematrix/json?origins=1600%20pennsylvania%20avenue&destinations=1500%20college%20street&mode=driving&units=imperial

输出是这样的:

{
"destination_addresses" : [ "1500 College Street, Beaumont, TX 77701, USA" ],
"origin_addresses" : [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "1,306 mi",
"value" : 2102536
},
"duration" : {
"text" : "18 hours 48 mins",
"value" : 67684
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}

我试过:

1.

JSONArray jsonArray = jObject.getJSONArray("rows");
JSONArray routes = jsonArray.getJSONArray(0);
stringBuilder.append(routes.getJSONObject(0).getString("text"));

2.

JSONArray jsonArray = jObject.getJSONArray("rows");
JSONObject routes = jsonArray.getJSONObject(0);
stringBuilder.append(routes.getJSONObject("distance").getString("text"));

3.

JSONArray jsonArray = jObject.getJSONArray("elements");                    stringBuilder.append(routes.getJSONObject(0).getString("text"));

我已经尝试了更多,但在我看来它们应该有效。在我看来,rows 是一个数组,elements 也是一个数组。因此,接下来我需要从原始 JSONObject 中获取行,然后从行数组中获取元素数组,然后从该数组中获取距离对象,最后获取文本值并将其添加到字符串生成器 I较早创建。我做错了吗?提前感谢您的帮助。

最佳答案

这是对我有用的

//httpResponse is the output of google api
JSONObject jsonRespRouteDistance = new JSONObject(httpResponse)
.getJSONArray("rows")
.getJSONObject(0)
.getJSONArray ("elements")
.getJSONObject(0)
.getJSONObject("distance");

String distance = jsonRespRouteDistance.get("text").toString();

/*
* For distance, below is only partial solution as the
* output to string destination_addr will contain square brackets [] and double codes ""
* Eg. [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ]
*
*/
String destination_addr = new JSONObject(httpResponse)
.get("destination_addresses")
.toString();

[更新]

假设我们只有一个目标地址,而不是多个。一点字符串操作就可以得到没有代码 "和方括号 []

的干净字符串
StringBuilder stringBuilderDestinationAddr = new StringBuilder();

for (int i = 0; i < destination_addr.length(); i++)
if (destination_addr.charAt(i) != '[' && destination_addr.charAt(i) != ']' && destination_addr.charAt(i) != '"')
stringBuilderDestinationAddr.append(pickup_addr.destination_addr (i));

String strCleanDestination = stringBuilderDestinationAddr.toString();

关于java - 从 google maps DistanceMatrix api 在 android 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com