在android中简单的Json解析

时间:2012-02-21 06:37:07

标签: android json parsing

我收到了Json的回复。我无法从string.my字符串中获取值

Json_response是

{"NameAllList":[{"Current":{"time":"2012-02-21T08:04:21","Name":"abcd"},
    "Next":{"Name":"data1","StartTime":"2012-02-21T08:06:21"}},{"Current":{"time":"2012-02-21T08:14:21","Name":"defg"},
    "Next":{"Name":"data2","StartTime":"2012-02-21T08:24:21"}},{"Current":{"time":"2012-02-21T08:28:21","Name":"ghij"},
    "Next":{"Name":"data3","StartTime":"2012-02-21T08:34:21"}},{"Current":{"time":"2012-02-21T08:40:21","Name":"knmo"},
    "Next":{"Name":"data4","StartTime":"2012-02-21T08:48:21"}}]}

我试过这个。

JSONObject jsonObj = new JSONObject(json_response);
JSONObject subObj = jsonObj.getJSONObject("Current");
String name_current =subObj.getString("Name");

但我无法获得“姓名”的价值。我做了什么错。提供进行上述解析的链接。

4 个答案:

答案 0 :(得分:3)

首先,您的JSON响应将NameAllList作为JSON对象数组。

所以你必须首先获取JSON数组,然后你可以逐个获取对象。

例如:

JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");

for(int i=0; i<array.length(); i++)
{
   // Retrieve Current object as such
   JSONObject objCurrent = array.getJSONObject("Current");

   // Retrieve Next object as such
   JSONObject objNext = array.getJSONObject("Next");
}

答案 1 :(得分:1)

当您应该为第二个请求使用JSONArray时,

看起来像是在尝试使用JSONObject。试试这个:

JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");

在你的JSON返回中,“NameAllList实际上是一个数组,需要像这样处理。一旦你将它设置为”array“,你就可以运行for循环并将其视为Java中的任何其他数组。

如果有帮助,请告诉我。

大卫

答案 2 :(得分:1)

您没有正确解析json,因此您无法获取Name的值。请注意,JSON Annotation []代表JSONArray,而{}代表JSONObject,因此获取当前项目名称的方法是:

JSONObject jsonObj = new JSONObject(json_response_string);
JSONArray jsonArr=jsonObj.getJSONArray("NameAllList");
String Hora_name_current="";
for(int i=0;i<jsonArr.length();i++)
{
     JSONObject obj=jsonArr.get(i);
     try{
           JSONObject subObj = obj.getJSONObject("Current");
           Hora_name_current =subObj.getString("Name");
           break;
     }catch(JSONException ex)
     {

     }



}

答案 3 :(得分:-1)

JSONObject jsonObj = new JSONObject(json_response_string); JSONArray jsonArray = jsonObj.getJSONArrays(“NameAllList”);