2011-10-15 127 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"));  
    ..............