从另一个JSONObject - Android获取ID的JSONObject

时间:2011-10-15 12:18:26

标签: android json

我在解析从Web服务器获取的JSON字符串时遇到了一些问题。所以我的JSON看起来像这样:

{
 ..........
"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,但问题是他们的名字每次都不同。所以我不能只做json.getJSONObject("660");。那么任何建议我该怎么做?

4 个答案:

答案 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

答案 1 :(得分:5)

使用JSONObject.keys()获取关键迭代器,然后getJsonObject( key)获取对象。

答案 2 :(得分:1)

尝试以下代码 -

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

其中names()方法返回名称数组,它存储在nameArray中,valArray包含与valArray对应的值数组。

您可以在这些数组上使用for循环来迭代以获取值。

答案 3 :(得分: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"));     
     ..............