#java #string #jsonelement
#java #строка #jsonelement
Вопрос:
Я хочу создать JSONObject в java такого типа:
"a": "b",
"c": {
"d": {
"e": [
"f",
"g",
"h"
]
}
}
Ниже приведен фрагмент кода, в котором я пытаюсь добавить значение «e», заданное в виде списка:
import com.google.gson.JsonObject;
import java.util.ArrayList;
List<String> arr = new ArrayList<String>();
arr.add("f");
arr.add("g");
arr.add("h");
JsonObject arrayList = new JsonObject();
arrayList.add("e", arr);
В этой части я получаю сообщение об ошибке:
java.util.List<java.lang.Строка> не может быть преобразована в com.google.gson.JsonElement Элемент
Любые предложения по решению этой проблемы будут оценены. Спасибо!
Ответ №1:
Попробуйте следующее
arrayList.add("e", gson.toJsonTree(arr));
Комментарии:
1. Спасибо, Саад. Теперь эта строка компилируется. Однако в следующей строке я получаю сообщение об ошибке: списки фактических и формальных аргументов отличаются по длине
2. Спасибо, Саад. Теперь эта строка компилируется. Однако у меня также есть следующее: JSONArray arrayJson Json = new JSONArray(); arrayJson.add(«d», ArrayList). Здесь я получаю причину ошибки: списки фактических и формальных аргументов отличаются по длине. Не знаете почему?
3. JSONObject dObj = new JSONObject(); dObj.add(«d», ArrayList); System.out.println(dObj);
4. Спасибо, Саад. Это работает. Но допустим, если у меня есть что-то вроде «a»: «b», «c»: { «d»: { «e»: [ «f», «g», «h» ] «i»: [ «j», «k», «l», ] } } тогда должен ли я использовать JSONArray и как?
5. Вы можете создать и поместить объекты «e» и «i» в список и добавить этот список в «d»
Ответ №2:
Это скомпилировано и запущено без ошибок для меня:
List<String> arr = new ArrayList<String>();
arr.add("f");
arr.add("g");
arr.add("h");
JsonObject arrayList = new JsonObject();
Gson gson = new Gson();
arrayList.add("e", gson.toJsonTree(arr));
Комментарии:
1. Спасибо, Майкл. Теперь эта строка компилируется. Однако у меня также есть следующее: JSONArray arrayJson Json = new JSONArray(); arrayJson.add(«d», ArrayList). Здесь я получаю причину ошибки: списки фактических и формальных аргументов отличаются по длине. Не знаете почему?
2. @CodingPractice — Если вы можете отредактировать свой исходный пост, а затем опубликовать свой полный класс, чтобы я мог видеть, что вы пытаетесь сделать, это помогло бы. Но вот определение класса для JSONArray, и вы видите, что именно вам разрешено передавать в массив. javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson /…