显示他完成ArrayList?

时间:2014-12-17 10:22:09

标签: java json arraylist

如何获取存储在我的arraylist中的完整列表? 我的json是

{"Children": [{"Child": {"childID": "1001","childName": "aaa","trackerID": "t1"}},{"Child": {"childID": "1002","childName": "bbb","trackerID": "t2"}}]}

代码:

JSONObject json =new JSONObject(line);
int len=json.getJSONArray("Children").length();
System.out.println(len);              //len is 2
ArrayList Children=new ArrayList();
Map store=new HashMap();
String[] cid=new String[len];
String[] name=new String[len];
for(int i=0;i<len;i++)
{
    cid[i]=json.getJSONArray("Children").getJSONObject(i).getJSONObject("Child").get("childID").toString();
    name[i]=json.getJSONArray("Children").getJSONObject(i).getJSONObject("Child").get("childName").toString();
    store.put("ID", cid[i]);
    store.put("Names",name[i]);

}
Children.add(store);
System.out.println(Children);

我得到的输出是[{Names=bbb, ID=1002}] 但还有更多的id和名称。预期输出为[{Names=aaa, ID=1001}],[{Names=bbb, ID=1002}] 如何打印所有内容?

4 个答案:

答案 0 :(得分:0)

试试这个

for(int i=0;i<len;i++)
{
Map store=new HashMap();
    cid[i]=json.getJSONArray("Children").getJSONObject(i).getJSONObject("Child").get("childID").toString();
    name[i]=json.getJSONArray("Children").getJSONObject(i).getJSONObject("Child").get("childName").toString();
    store.put("ID", cid[i]);
    store.put("Names",name[i]);
Children.add(store);

}

System.out.println(Children);

只需初始化循环内的Hashmap

答案 1 :(得分:0)

每次循环时,您都会覆盖地图存储中的键/值。

for(int i=0;i<len;i++)
{
    ...
    store.put("ID", cid[i]); // always using key "ID"
    store.put("Names",name[i]); // always using key "Names"
}

你需要移动

Children.add(store);
在for循环中

话虽如此,你真的需要在这里使用商店吗?

答案 2 :(得分:0)

Children.add(store);

将此行移到侧面for循环

答案 3 :(得分:0)

使用相同的两个键(“ID”和“Names”)将所有元素存储到Map中。

试试这个:

store.put(cid[i], name[i]);