将 Gson 中的字符串数组转换为 JsonArray

33

我正在使用Gson,尝试像这样将一堆字符串值添加到JsonArray中:

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

问题在于add方法只接受一个JsonElement

我尝试将一个字符串强制转换为JsonElement,但是没有成功。

如何使用Gson实现?

4个回答

73

你可以创建一个原始类型,将其包含字符串值并将其添加到数组中:

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

11
这为什么如此荒谬得违反直觉? - allidoiswin
为什么文档告诉我们有JsonArray.add(String)这个方法呢?! - Casey Murray

4
看起来你需要创建一个新的JsonPrimitive("value1"),并将其添加。请参阅Java文档

4
对于新版本的Gson库,现在我们可以添加字符串。它还扩展了对添加布尔值字符数字等的支持(在此处查看更多信息:这里)。
现在我可以使用以下方法:
JsonArray msisdnsArray = new JsonArray();
for (String msisdn : msisdns) {
    msisdnsArray.add(msisdn);
}

2
我希望你能够提供这样的内容:
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!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接