2012-02-21 67 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