2012-02-21 69 views
1

我得到了Json响应。我无法从string.my字符串获取值是在android中简单的Json解析

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"); 

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

+0

你怎么能没有这样的字符串转义序列创建字符串变量? – 2012-02-21 06:49:17

+0

你不能。所以我编辑过。 – Dray 2012-02-21 11:09:43

回答

1

您还没有解析JSON正确,所以你不能获取名称的值。请注意JSON注释[]代表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) 
    { 

    } 



} 
1

看起来像你想要使用JSONObject,当你应该使用JSONArray的第二个请求。试试这个:

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

在你的JSON回报,“NameAllList实际上是一个数组,需要这样进行处理一旦你将其设置为‘阵’,然后你可以运行一个for循环,并把它像任何在Java中其他阵列。

让我知道是否有帮助。

大卫

-1

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

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! – Hiral 2012-02-21 07:02:43

+0

我写的更详细的例子:[Android - JSON解析示例](http://goo.gl/S2TcW)。 PS:我知道我不能自我推销我的博客,但我认为这会让用户对JSON解析感到困惑。 – 2012-02-21 07:12:21

+0

为什么你不能自我推销你的内容,如果它确实与问题紧密相关? – ariefbayu 2012-02-21 07:16:44