【发布时间】:2011-11-06 10:16:27
【问题描述】:
我正在尝试使用谷歌地图 API 来获取方向时间。我希望创建一个 url,获取 JSON 响应,然后检查该响应的旅行持续时间。创建 JSON 对象后,我无法导航它。对我来说,这表明我要么搞砸了获取响应或导航 JSON 对象。如果您能查看我从网络上的教程中拼凑的代码片段,我将不胜感激。
此代码旨在获取响应。它被 try/catch 包围,并且没有触发任何错误。
String stringUrl = <URL GOES HERE>;
URL url = new URL(stringUrl);
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK)
{
BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
String strLine = null;
while ((strLine = input.readLine()) != null)
{
response.append(strLine);
}
input.close();
}
String jsonOutput = response.toString();
此代码旨在获取该输出并将其解析为最终字符串,持续时间,受this stackoverflow answer 的启发,用于类似问题。
JSONObject jsonObject = new JSONObject(jsonOutput);
JSONObject routeObject = jsonObject.getJSONObject("routes");
JSONObject legsObject = routeObject.getJSONObject("legs");
JSONObject durationObject = legsObject.getJSONObject("duration");
String duration = durationObject.getString("text");
我在第二个块的第二行捕获了一个 JSON 异常。任何人都可以帮助解决这个问题吗?或者也许建议一种更简单的方法来获取相同的数据?
编辑:感谢这里的第一个有用的答案(来自 aromero),后半部分现在看起来像:
JSONObject jsonObject = new JSONObject(responseText);
JSONArray routeObject = jsonObject.getJSONArray("routes");
JSONArray legsObject = routeObject.getJSONArray(2); ***error***
JSONObject durationObject = legsObject.getJSONObject(1);
String duration = durationObject.getString("text");
但它仍然抛出一个 JSON 异常,只是现在它在第三行之后。我确信这很容易解决,但我非常感谢您的帮助。
示例 JSON 文件的相关部分如下所示:
{
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 34.092810,
"lng" : -118.328860
},
"southwest" : {
"lat" : 33.995590,
"lng" : -118.446040
}
},
"copyrights" : "Map data ©2011 Google",
"legs" : [
{
"distance" : {
"text" : "12.9 mi",
"value" : 20807
},
"duration" : {
"text" : "27 mins",
"value" : 1619
},
【问题讨论】:
标签: android json google-maps-api-3