Android构建jsonobjects的jsonarray

时间:2016-03-16 14:47:55

标签: android arrays json

我想构建一个json对象,其中包含一个像这样的对象数组:

{"ChoisiEvents":[{"Id_evt":25},{"Id_evt":4}],"parasite":3}

我写了一些代码:

JSONArray JAChoisiEvents = new JSONArray();
JSONObject objEvent = new JSONObject();
try{
    if (cbxTemp.isChecked()){
          objEvent.put("Id_evt", 25);
          JAChoisiEvents.put(objEvent);
    }
    if (cbxAutreRaison.isChecked()) {
          objEvent.put("Id_evt", 4);
          JAChoisiEvents.put(objEvent);
    }
} catch (JSONException e) {
     e.printStackTrace();
}
//...
 JSONObject obj = new JSONObject();
 try {
   obj.put("parasite", iParasite); 
   System.out.println("ChoisiEvents : " + JAChoisiEvents.toString());
   obj.put("ChoisiEvents", JAChoisiEvents); //
  } catch (JSONException e) {
      e.printStackTrace();
  }

我得到了以下结果:

{"ChoisiEvents":[{"Id_evt":4},{"Id_evt":4}],"parasite":3}

如您所见,每次重复我的数组中的最后一项!

1 个答案:

答案 0 :(得分:1)

您正在使用相同的JSONObject,这就是为什么值会覆盖,

尝试第二次实例化

objEvent = new JSONObject();

添加到第一个值后。

喜欢这个

JSONObject objEvent;

    if (cbxTemp.isChecked()){
         objEvent = new JSONObject();
          objEvent.put("Id_evt", 25);
          JAChoisiEvents.put(objEvent);
    }
    if (cbxAutreRaison.isChecked()) {
         objEvent = new JSONObject();
          objEvent.put("Id_evt", 4);
          JAChoisiEvents.put(objEvent);
    }