2013-05-21 13 views
0

我試圖形成jsonarray這種類型。放置方法替換jsonarray的前一個對象

[ 
{ 
    "userIdentity":"bbb", 
    "admin":true/false 
}, 
{ 
    "userIdentity":"bbb", 
    "admin":true/false 
} 
. 
. 
. 

     ] 

我應用於機器人給輸入這個代碼從一個hashmap TOADD:

 JSONObject inerobj=new JSONObject(); 
     JSONArray jsonarray=new JSONArray(); 
     for (String s : toAdd.keySet()) { 
     // Log.d("userid",s); 
      inerobj.put("userIdentity", s); 
      inerobj.put("admin", Boolean.parseBoolean(toAdd.get(s))); 
      Log.d("inerobj.toString",inerobj.toString()); 
      jsonarray.put(inerobj); 
      Log.d("jsonarray.toString",jsonarray.toString());    
     } 

的散列映射TOADD具有:

towhid37:value=true 
towhid32:value=true 

inerobj追加當該值ok.But inerobj給jsonarray,它增加了第一個value(towhid37)好吧。 bt當它把第二個value(towhid32)它也取代第一個值,即數組的第一個元素現在變成(towhid32)。

繼承人logcat的輸出:

05-20 12:20:43.968: D/inerobj.toString(3788): {"admin":true,"userIdentity":"towhid37"} 

05-20 12:20:43.988: D/jsonarray.toString(3788): [{"admin":true,"userIdentity":"towhid37"}] 

05-20 12:20:43.988: D/inerobj.toString(3788): {"admin":true,"userIdentity":"towhid32"} 

05-20 12:20:44.038: D/jsonarray.toString(3788): [{"admin":true,"userIdentity":"towhid32"},{"admin":true,"userIdentity":"towhid32"}] 

這裏有什麼問題嗎?

回答

2

添加

inerobj=new JSONObject(); 

裏面的for循環。

據我所知,它存儲對JSONObject的引用而不是它的值,這就是爲什麼這些值似乎被覆蓋。只需重新初始化該變量即可添加新值。

+0

非常感謝你Naveen ....現在工作正常 –