Android使用Key将JSONObject添加到JSONArray

时间:2013-12-31 10:44:29

标签: android json

您好我正在尝试使用标题创建一个带字母的列表,所以我想要一个带有“B”键的JSONObjects数组,例如在该对象中我将添加一个包含联系人姓名的JSONObjects数组以键或“B”开头

有没有人知道如何使用密钥将JSONObject添加到JSONArray?这样我就可以检索特定的对象

3 个答案:

答案 0 :(得分:14)

要达到您的要求,您的JSON对象应该是这样的

{
   "A":[
      {
         "name":"aaa"
      },
      {
         "name":"aba"
      }
   ],
   "B":[
      {
         "name":"bbb"
      },
      {
         "name":"bba"
      }
   ]
}

上面的Object的伪实现如下所示:

//Maint list object
    JSONObject objMainList = new JSONObject();

    //prepare item array for "A"
    JSONArray arrForA = new JSONArray();
    JSONObject itemA = new JSONObject();
    itemA.put("name", "aaa");
    arrForA.put(itemA);

  //prepare item array for "B"
    JSONArray arrForB = new JSONArray();
    JSONObject itemB = new JSONObject();
    itemB.put("name", "bbb");
    arrForB.put(itemB);

    //Finally add item arrays for "A" and "B" to main list with key
    objMainList.put("A", arrForA);
    objMainList.put("B", arrForB);

更新:检查“A”或“B”..是否存在

if(objMainList.has("A")){

    }

答案 1 :(得分:2)

尝试这种方式:

{"Contacts": //JSONObject
  {
    "B"://JSONArray..
    [
        {"ContactName":sdfsdf,"ID":900,"Number":1368349}, 
        {"ContactName":adsdfd,"ID":1900,"Number":136856},  
         {"ContactName":adglkhdofg,"ID":600,"Number":136845}
   ],
  "C":[
         {"ContactName":alkghoi,"ID":900,"Number":1368349},
         {"ContactName":wetete,"ID":1900,"Number":136856}, 
         {"ContactName":dfhtfh,"ID":600,"Number":136845}
     ]
      .....//and so on.. 
      }
}

答案 2 :(得分:0)

在我看来,你要求的是地图的功能。然后,您可以使用行为类似于Map.Entry的对象数组。 类似的东西:

[{key:a,value:<some-value>},...]

此外:为什么不将数据序列化为联系人列表并以编程方式添加“排序”行为(使用字母索引)?