2012-12-20 16 views
8

Merhabalar Ben Json'da en iyisi değilim. Bir json nesnesine bir döngü aracılığıyla bir json dizisi eklemeyi deniyordum, ancak sorun her zaman döngüde geliyor, bu da dizideki önceki verileri yeni verilerle sürüyor. X.size = 2 VerilenJSON JSONArray konusuna ekle

JSONObject jsonObj = new JSONObject(); 
JSONArray jsonArray = new JSONArray(); 
if(X.size() > 0) 
{ 
    for (int j = 0; j < X.size(); j++) 
    { 
    zBean aBean = (zBean)X.get(j); 
    jsonObj.put(ID,newInteger(aBean.getId())); 
    jsonObj.put(NAME,aBean.getName()); 
    jsonArray.add(jsonObj); 
    } 
} 

örnek: Benim örnek yeterince açık umut

when j=0 
jsonObj => {"Name":"name1","Id":1000} 
jsonArray => [{"Name":"name1","Id":1000}] 

when j = 1 
jsonObj => {"Name":"name2","Id":1001} 
jsonArray => [{"Name":"name2","Id":1001},{"Name":"name2","Id":1001}] 

burada benim kodudur.

Burada bana yardımcı olabilecek herhangi biri varsa minnettar ol.

for (int j = 0; j < X.size(); j++) 
{ 
    zBean aBean = (zBean)X.get(j); 
    jsonObj = new JSONObject(); 
//^^^^^^^^^^^^^^^^^^^^^^^^^^^ add this line 
    jsonObj.put(ID,newInteger(aBean.getId())); 
    jsonObj.put(NAME,aBean.getName()); 
    jsonArray.add(jsonObj); 
} 

Aksi takdirde defalarca tekrar tekrar aynı örneği güncellenmesi ve aynı nesneye bir başvuru ekliyoruz:

cevap

19

Sen döngünün her yineleme ile yeni jsonObj referans oluşturmak gerekir dizi. Hepsi aynı referans olduklarından, bunlardan birinde bir değişiklik dizideki tümünü etkiler.

+0

Çok teşekkürler, sorunumu çözdü. – ComeRun

+0

Bunu bir cevap olarak işaretleyin;) – Ayyoub

+0

@ComeRun: Lütfen bunu cevap olarak işaretleyin, böylece insanlar çalıştığı bir bakıştan haberdar olurlar. – ofey

İlgili konular