web-dev-qa-db-ja.com

JsonArrayへの文字列のGson配列

私はGsonを使用しており、次のように一連の文字列値をJsonArrayに追加しようとしています。

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

問題は、addメソッドが取るのはJsonElementだけであることです。

文字列をJsonElementにキャストしようとしましたが、うまくいきませんでした。

Gsonを使用するにはどうすればよいですか?

31
RedEagle

String値を含むプリミティブを作成して、配列に追加できます。

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

new JsonPrimitive("value1")を作成して追加する必要があるようです。参照 The javadoc

4
slipset

Gsonライブラリの新しいバージョンの場合、Stringsも追加できるようになりました。 BooleanCharacterNumberなどの追加のサポートも拡張されています(詳細は こちら を参照)

これを使うと今はうまくいきます:

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

私はこのようなものを自分で望んでいました:

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" });

出来上がり!

1