#java #json #eclipse
#java #json #eclipse
Вопрос:
У меня есть JSONArray, который состоит из множества массивов. Мне нужно вставить новый элемент в начало каждого из этих массивов.
Я попытался обойти его, чтобы извлечь каждый из массивов и вставить новый элемент, но это не сработало.
Я попытался обойти его, чтобы извлечь каждый из массивов и вставить новый элемент, но это не сработало.
for (int i=0; i<consultaArray.size();i )
{
JsonElement elemento = consultaArray.get(i);
JsonObject item = new JsonObject();
item.addProperty("Prueba", "Prueba");
}
Структура является [{"key1":"value1","key2":"value2"},{....},....]
Он должен вставить новый элемент в каждый из массивов JSONArray
Комментарии:
1. Ну, вы ничего не делаете с
elemento
иitem
, так что же вы ожидаете, что произойдет? Предполагая, что вы хотите добавитьitem
вconsultaArray
, вам пришлось бы сдвинуть все элементы вправо на единицу, а затем установить элементу индекс 0. ОднакоJsonArray
объекты могут уже предоставлять методы для добавления элементов с определенными индексами.2. Какую библиотеку вы используете,
Gson
? Как выглядит ваш вводJSON
? Что-то вроде этого:[[{"a":1,"b":2}, {...}, ...],[{"a":3, "b":4}, ...]]
? Не могли бы вы показать нам входные данныеJSON
? Вы хотите добавить один и тот же новый узел в каждый массив?3. ‘это не работает’ ничего не значит. Какую библиотеку вы используете? Что является исключением?
4. Да, я использую gson, и структура такова, [[{«a»:1,»b»:2}, {…}, …],[{» a»: 3, «b»: 4}, …]]. Да, мне нужно добавить то же значение, оно должно быть [[{«c»: 3, «a»: 1, «b»:2}, {…}, …],[{» c»:3,»a»:3, «b»:4}, …]]
5. Если я правильно понимаю, вы изменили каждый
JSON
объект на первом месте в каждом массиве, добавив новое свойство:"c":3
. Итак, вы не хотите добавлять новый объект. Вы хотите добавить новое свойство к существующему объекту в0-index
в каждом массиве. Я прав?
Ответ №1:
Я использую Gson 2.8.5 для этого кода
String jsonArrayStr = "[[{'key1':'value1'},{...}],[{'key1':'value1'},{...}]]";
JsonArray consultaArray = (JsonArray) new JsonParser().parse(jsonArrayStr);
JsonArray finalJsonArray = new JsonArray();
for (JsonElement arrEl : consultaArray) {
JsonArray elemento = (JsonArray) arrEl;
JsonArray finalArr = new JsonArray();
JsonObject item = new JsonObject();
item.addProperty("Prueba", "Prueba");
finalArr.add(item);
for (JsonElement el : elemento) {
finalArr.add(el);
}
finalJsonArray.add(finalArr);
}
Конечный массив
[[{"Prueba":"Prueba"},{"key1":"value1"},{...}],[{"Prueba":"Prueba"},{"key1":"value1"},{...}]]
Я вставляю новый элемент в начальную точку массива. Если вам это не нужно, удалите цикл «for» и используйте youJsonArray.add()
Комментарии:
1. Это приводит к следующей ошибке java.lang. ClassCastException: com.google.gson. JSONObject не может быть приведен к com.google.gson. JSONArray в строке JSONArray elemento = (JSONArray) arrEl;
2. @FranciscoJavierBonilloPonce Вы удаляете элемент {…}? Мой полный jsonArrayStr «[[{‘key1’: ‘value1’},{‘key2′:’value2’}], [{‘key1′:’value1’}, {‘key2’: ‘value2’}]]» отлично работает.
Ответ №2:
Основываясь на вашем примере, zdadco, я сделал следующее:
JsonArray consultaArray = getFields(querySQL);
JsonArray finalJsonArray = new JsonArray();
for (JsonElement arrEl : consultaArray)
{
JsonObject obj = arrEl.getAsJsonObject();
JsonObject item = new JsonObject();
JsonArray finalArr = new JsonArray();
item.addProperty("Test", "Test");
finalArr.add(item);
finalArr.add(arrEl);
finalJsonArray.add(finalArr);
}
И в результате получается:
Перед [[{"ID":"70","Org":"Townhall","..",.....}]]
После : [[{"Test":"Test"},{"ID":"70","Org":"Townhall","..",.......}]]