Ответ 1
Вы можете создать примитив, который будет содержать значение String и добавить его в массив:
JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
Я использую Gson и пытаюсь добавить кучу строковых значений в JsonArray
следующим образом:
JsonArray jArray = new JsonArray();
jArray.add("value1");
Проблема заключается в том, что метод add принимает только JsonElement
.
Я попытался применить String к JsonElement
, но это не сработало.
Как мне это сделать с помощью Gson?
Вы можете создать примитив, который будет содержать значение String и добавить его в массив:
JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
Похоже, вы должны сделать new JsonPrimitive("value1")
и добавить это.
См. Javadoc
Для более новых версий gson-библиотеки теперь мы также можем добавить строки. Он также расширил поддержку добавления Boolean, Character, Number и т.д.
Теперь это работает для меня:
JsonArray msisdnsArray = new JsonArray();
for(String msisdn : msisdns) {
msisdnsArray.add(msisdn);
}
Я тоже надеялся на что-то подобное:
JsonObject jo = new JsonObject();
jo.addProperty("strings", new String[] { "value1", "value2" });
Но, к сожалению, это не поддерживается GSON, поэтому я создал этот помощник:
public static void Add(JsonObject jo, String property, String[] values) {
JsonArray array = new JsonArray();
for (String value : values) {
array.add(new JsonPrimitive(value));
}
jo.add(property, array);
}
И затем используйте его так:
JsonObject jo = new JsonObject();
Add(jo, "strings", new String[] { "value1", "value2" });
Voila!