2011-10-15 162 views
3

我有一個解析JSON字符串的問題,我從Web服務器獲得。所以,我的JSON看起來是這樣的:從另一個JSONObject獲取JSONObject ID - Android

{ 
.......... 
"statistics":{ 
       "660":{ 
         "param_id":660, 
         "cat_id":2, 
         "param_title":"Number", 
         "param_value":"26", 
         "value_type":"singleline", 
         "elem_order":"1"} 

      , 
       "662":{ 
         "param_id":662, 
         "cat_id":2, 
         "param_title":"Name", 
         "param_value":"Dani", 
         "value_type":"singleline", 
         "elem_order":"2" 
        } 
        // --||-- 
      } 
} 

所以我得到一個JSONObject statisics,我想從statistics得到一個JSONObjects,但問題是,他們的名字是不同的everytime.So我不能只是做json.getJSONObject("660");。所以,任何建議我怎麼能這樣做?

+0

檢查我的答案在這裏http://stackoverflow.com/questions/7669730/java-representation-of-json -object/7669794#7669794 –

+0

實際上看起來不錯,但我不能說我的JSONObject名稱每次都會從0開始。 –

+0

那麼它會動態給你,它不重要,你的JSONObject應該每次都必須爲0,只是嘗試它。 –

回答

9

你可以做這樣的事情:

if(jsonObj.has("statistics")){ 
    Iterator<Object> keys = stats.keys(); 
    while(keys.hasNext()){ 

    String key = (String) keys.next(); 
    JSONObject obj = new JSONObject(); 
    obj = stats.getJSONObject(key); 
    // get JSON 

    }// end while 

}//end if 
+0

什麼是「統計」在這裏.. –

+0

這是一個'JSONObject':'JSONObject stats = jsonObj.optJSONObject(「統計」);' –

+0

+1謝謝你我解決了... –

5

使用JSONObject.keys()獲取鍵迭代器,然後getJsonObject(key)獲取對象。

+0

你能更具體怎麼使用keys()? –

1

嘗試下面代碼 -

JSONArray nameArray = statisics.names(); 
JSONArray valArray = statisics.toJSONArray(nameArray); 

其中名稱()方法返回名稱的數組,並將其存儲在nameArray和的valarray包含對應於的valarray值數組。

你可以在這些數組上循環使用for循環來獲取值。

1

使用這樣

JSONObject jsonOnb = json.getJSONObject("statistics") ; 
JSONObject pagesObj = jsonOnb.getJSONObject(jsonOnb.names().getString(0));   

    Log.i("pageid", "pageid= " +pagesObj.get("param_id"));     
    Log.i("title", "title= " +pagesObj.get("cat_id"));  
    ..............