2014-12-17 2 views
0

Как я могу получить полный список, хранящийся в моем arraylist? мой JSON являетсяПоказывает, что он закончил ArrayList?

{"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}] , но есть много других идентификаторов и выход names's.Expected является [{Names=aaa, ID=1001}],[{Names=bbb, ID=1002}] Как я могу напечатать все это?

+0

опубликовать также JSON и ожидаемый выход, может быть лучшее решение доступно –

ответ

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); 

Просто initialze в Hashmap внутри цикла.

+0

круто ТНХ это мне помогло :) – Nitin

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); 

внутри для цикла.

Сказав это, вам действительно нужно использовать магазин здесь?

0
Children.add(store); 

ход этой линии в сторону для контура

0

хранить все элементы в карты с теми же двумя ключами («ID» и «Имена»).

Попробуйте это:

store.put(cid[i], name[i]); 
Смежные вопросы