Подтвердить что ты не робот

Gson Array of Strings для JsonArray

Я использую Gson и пытаюсь добавить кучу строковых значений в JsonArray следующим образом:

JsonArray jArray = new JsonArray();
jArray.add("value1");

Проблема заключается в том, что метод add принимает только JsonElement.

Я попытался применить String к JsonElement, но это не сработало.

Как мне это сделать с помощью Gson?

4b9b3361

Ответ 1

Вы можете создать примитив, который будет содержать значение String и добавить его в массив:

JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);

Ответ 2

Похоже, вы должны сделать new JsonPrimitive("value1") и добавить это. См. Javadoc

Ответ 3

Для более новых версий gson-библиотеки теперь мы также можем добавить строки. Он также расширил поддержку добавления Boolean, Character, Number и т.д.

https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonArray.html#add-java.lang.String-

Теперь это работает для меня:

JsonArray msisdnsArray = new JsonArray();
        for(String msisdn : msisdns) {
            msisdnsArray.add(msisdn);
        }

Ответ 4

Я тоже надеялся на что-то подобное:

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!