2012-12-20 15 views
8

हाय सब मैं जेसन में सर्वश्रेष्ठ नहीं हूं। मैं कुछ जेसन ऑब्जेक्ट को एक लूप के माध्यम से एक जेसन सरणी में जोड़ने की कोशिश कर रहा था, लेकिन समस्या यह है कि जब भी यह लूप की बात आती है, तो यह भी नए डेटा द्वारा सरणी में पिछले डेटा की सवारी करता है।JSON JSONArray समस्या में जोड़ें

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

उदाहरण X.size = 2 दिया:

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}] 

मुझे आशा है कि मेरे उदाहरण पर्याप्त स्पष्ट है यहाँ मेरे कोड है।

आईडी आभारी रहें यदि कोई मेरी मदद कर सकता है।

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

नहीं तो आप फिर से पर एक ही उदाहरण अद्यतन कर रहे हैं, और एक ही वस्तु के लिए एक संदर्भ जोड़ने के लिए कई बार:

उत्तर

19

आप पाश के हर यात्रा के साथ एक नया jsonObj संदर्भ बनाने की जरूरत सरणी। चूंकि वे सभी एक ही संदर्भ हैं, उनमें से एक में परिवर्तन उन सभी को सरणी में प्रभावित करता है।

+0

धन्यवाद बहुत आदमी, यह मेरी समस्या हल हो गया। – ComeRun

+0

इसे उत्तर के रूप में चिह्नित करें;) – Ayyoub

+0

@ कॉमरुन: कृपया इसे उत्तर के रूप में चिह्नित करें ताकि लोग एक नज़र से जान सकें कि यह काम करता है। – ofey

संबंधित मुद्दे