问题描述
|
我经历了许多教程,以了解如何解析JSON对象。来自Web服务的ma JSON对象响应的结构是这样的
{\"posts\":[
{\"gpoint\":{\"latitude\":\"18.966364\",\"longitude\":\"72.811317\"}},{\"gpoint\":{\"latitude\":\"19.07023\",\"longitude\":\"72.82917\"}},{\"gpoint\":{\"latitude\":\"19.094889\",\"longitude\":\"72.840157\"}},{\"gpoint\":{\"latitude\":\"19.056601\",\"longitude\":\"72.901955\"}}]
}
这是我的代码:
HttpResponse response= client.execute(post);
content = response.getEntity().getContent();
String result = stringConversion(content);
jObject = new JSONObject(result);
JSONArray gpoint = jObject.getJSONArray(\"posts\");
for (int i = 0; i<gpoint.length();i++)
{
double geoLat=gpoint.getJSONObject(i).optDouble(\"latitude\");
double geoLong=gpoint.getJSONObject(i).optDouble(\"longitude\");
// double geoLat = gPointObject.getDouble(\"latitude\");
// double geoLong = gPointObject.getDouble(\"longitude\");
Log.i(Tag,\" \"+ geoLat);
Log.i(Tag,\" \"+ geoLong);
}
}
catch(JSONException e){
Log.e(\"log_tag\",\"Error parsing data \"+e.toString());
}
我无法解析此响应,每当我解析它时,它都不会给出任何解析异常,但经度和纬度的值为NaN
请告诉我,我要去哪里了?提前致谢。
解决方法
尝试这个:
JSONObject gp;
for (int i = 0; i<gpoint.length();i++)
{
gp = gpoint.getJSONObject(i);
double geoLat = gp.getJSONObject(\"gpoint\").optDouble(\"latitude\");
double geoLong = gp.getJSONObject(\"gpoint\").optDouble(\"latitude\");
// double geoLat = gPointObject.getDouble(\"latitude\");
// double geoLong = gPointObject.getDouble(\"longitude\");
Log.i(Tag,\" \"+ geoLat);
Log.i(Tag,\" \"+ geoLong);
}
您缺少一个嵌套层。
, 您可能要使用GSON。如果您准备了足够的DTO结构,则可以在一个函数调用中映射JSON。我正在我的应用程序中使用它。