私はGsonを使用しており、次のように一連の文字列値をJsonArray
に追加しようとしています。
JsonArray jArray = new JsonArray();
jArray.add("value1");
問題は、addメソッドが取るのはJsonElement
だけであることです。
文字列をJsonElement
にキャストしようとしましたが、うまくいきませんでした。
Gsonを使用するにはどうすればよいですか?
String値を含むプリミティブを作成して、配列に追加できます。
JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
new JsonPrimitive("value1")
を作成して追加する必要があるようです。参照 The javadoc
Gsonライブラリの新しいバージョンの場合、Strings
も追加できるようになりました。 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" });
出来上がり!