Вопрос по json, java – Gson Массив строк в JsonArray

26

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

<code>JsonArray jArray = new JsonArray();
jArray.add("value1");
</code>

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

Я пытался бросить строку вJsonElement но это не сработало.

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

Ваш Ответ

4   ответа
65

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

JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
Почему это так Смехотворно нелогично? allidoiswin
А почему в документах говорится, что существует JsonArray.add (String)?!? Casey Murray
2

Strings слишком. Также расширена поддержка добавленияBoolean, Character, Number и т. д. (подробнееВо)

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

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

new JsonPrimitive("value1") и добавь это. Видеть Джавадок

0

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

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

Похожие вопросы