从另一个JSONObject中通过ID获取JSONObject - Android

3

我在解析从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"
                    }
                    // --||--
           }
}

我有一个statistics的JSONObject,我想从中获取JSONObjects,但问题是它们的名称每次都不同。所以我不能只使用json.getJSONObject("660");。你有什么建议吗?


请在此处检查我的答案 http://stackoverflow.com/questions/7669730/java-representation-of-json-object/7669794#7669794 - Lalit Poptani
那看起来不错,但我不能保证我的JSONObject名称每次都从0开始。 - Android-Droid
它会动态地给你,你的JSONObject不一定每次都要为0,试试看就好了。 - Lalit Poptani
它抛出了一个异常,告诉我没有名为0的JSONObject。 - Android-Droid
你能展示一下你的代码和完整的JSON吗?你可以使用Pastebin进行展示。 - Lalit Poptani
显示剩余2条评论
4个回答

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

这是一个 JSONObjectJSONObject stats = jsonObj.optJSONObject("statistics"); - Android-Droid

5

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


你能更具体地说明一下我如何使用keys()吗? - Android-Droid

1

尝试下面的代码-

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

names() 方法返回名称数组,存储在 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"));     
     ..............

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接