【发布时间】:2012-05-08 11:48:53
【问题描述】:
我正在使用 Gson 并尝试将一堆字符串值添加到 JsonArray 中,如下所示:
JsonArray jArray = new JsonArray();
jArray.add("value1");
问题是 add 方法只需要一个JsonElement。
我尝试将字符串转换为 JsonElement,但没有成功。
我如何使用 Gson 来做到这一点?
【问题讨论】:
我正在使用 Gson 并尝试将一堆字符串值添加到 JsonArray 中,如下所示:
JsonArray jArray = new JsonArray();
jArray.add("value1");
问题是 add 方法只需要一个JsonElement。
我尝试将字符串转换为 JsonElement,但没有成功。
我如何使用 Gson 来做到这一点?
【问题讨论】:
您可以创建一个包含字符串值的原语并将其添加到数组中:
JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
【讨论】:
似乎你应该创建一个new JsonPrimitive("value1") 并添加它。
见The javadoc
【讨论】:
对于较新版本的 Gson 库,现在我们也可以添加 Strings。它还扩展了对添加Boolean、Character、Number 等的支持(查看更多here)
现在使用它对我有用:
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" });
瞧!
【讨论】: