我已经通过了一些教程来了解如何解析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
请告诉我,我哪里错了?提前谢谢。
答案 0 :(得分:3)
试试这个:
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);
}
你错过了一个嵌套层。
答案 1 :(得分:0)
您可能想要使用GSON。如果准备了足够的DTO结构,则可以在一个函数调用中映射JSON。我在我的应用程序中使用它。