我想构建一个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}
如您所见,每次重复我的数组中的最后一项!
答案 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);
}