0
Мне нужно добавить элемент в JSONArray, но метод «append» создает многократные массивы , а вместо этого добавляет один элемент.JAVA JSONObject, добавляющий новый элемент в массивы (JSONArray)
Что было бы самым простым способом?
Я создал следующий пример кода с JUnit только для изоляции моей проблемы.
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
public class JettisonJSONOperations {
JSONObject jsonObject = new JSONObject();
@Before
public void preCreateJsonObject(){
try {
jsonObject.put("groupName","administrators");
JSONArray members = new JSONArray();
members.put("edward");
members.put("richard");
members.put("john");
jsonObject.put("members", members);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(jsonObject.toString());
}
@Test
public void addingElementToJSONArray(){
try {
jsonObject.append("members", "batman");
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(jsonObject.toString());
}
}
Выход:
{"groupName":"administrators","members":["edward","richard","john"]}
{"groupName":"administrators","members":[["edward","richard","john"],"batman"]}
Process finished with exit code 0
вместо 'jsonObject. append ("members", "batman"); 'должен быть' jsonObject. getJSONArray ("members"). put ("batman"); 'Вы добавляли к JSONObject;) – Erwin
Ah ok .. Мне нужен еще один шаг .. это работает, спасибо @pyerwin! однако в моем конкретном случае я нашел некоторые проблемы с Jettison, как JsonProvider, используя Camel и CXF, поэтому я решил изменить его на Jackson и JSONObject от org.json. –