解析来自php web服务的json对象响应

时间:2011-05-30 08:37:29

标签: android json

我已经通过了一些教程来了解如何解析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

请告诉我,我哪里错了?提前谢谢。

2 个答案:

答案 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。我在我的应用程序中使用它。