【发布时间】:2014-02-20 03:59:25
【问题描述】:
我正在尝试在我的 android 程序中解析来自 google direction api 的 JSON 响应。这是下面的请求链接。我在这里跳过 JSON 响应,因为它太长,只需单击链接就会显示它。
我解析响应的代码:
try {
JSONObject responseObject = (JSONObject) new JSONTokener(responseString).nextValue();
this.responseString = responseObject.getString("status") ;
JSONArray routesArray = responseObject.getJSONArray("routes");
JSONObject route = routesArray.getJSONObject(0);
JSONArray legs ;
JSONObject leg ;
JSONArray steps ;
JSONObject dist;
Integer distance ;
if(route.has("legs")) {
legs = route.getJSONArray("legs");
leg = legs.getJSONObject(0) ;
steps = leg.getJSONArray("steps"); // EDIT : I had somehow missed this line before when copying the code from IDE to the website
int nsteps = steps.length() ;
for(int i=0;i<nsteps;i++) {
JSONObject step = steps.getJSONObject(i);
if(step.has("distance")) {
dist = (JSONObject) step.get("distance");// throws exception
//I would like to take the distance value and do something with it
//if(dist.has("value"))
// distance = (Integer) dist.get("value") ;
}
}
}
else
this.responseString = "not found" ;
} catch ( Exception e) {
e.printStackTrace() ;
}
这会引发异常(再次跳过,因为 JSON 响应太大。堆栈跟踪显示整个响应字符串):
org.json.JSONException: Expected ':' after polyline at character 13837 of {
"routes" : [
{
"bounds" : {
"northeast" : { ....
我尝试使用getJSONObject 函数而不是get,但我得到了同样的异常。
dist = step.getJSONObject("distance");
任何人都可以通过指出我在这里缺少什么来帮助我吗?我对 android 上的 parsin JSON 还不是很熟悉,所以我很可能在某个地方犯了一个愚蠢的错误。谢谢。
此站点上的另一个类似帖子,但不完全相同:JSON parsing of Google Maps API in Android App
【问题讨论】:
标签: android json google-maps parsing response