GSON中JsonArray的整数列表

dje*_*lin 5 java arrays json gson

现在我的代码很简单

// list is a List<Integer>

JsonArray arr = new JsonArray();
for(int i : list) {
    array.add(i);
}
Run Code Online (Sandbox Code Playgroud)

我有点震惊地看着API,我没有找到一个更少的手动,更实用的方法来做到这一点.我期望一个addRange,addArray构造函数从a Collection到a JsonArray等等.是否有一个,或者是否有一些基本的限制使得这不可能?

Mic*_*rth 12

如果将列表传递给Gson#toJsonTree方法,则返回JsonArray.

List<Integer> list = new ArrayList<>();
list.add(5);
JsonElement result = new GsonBuilder().create().toJsonTree(list);
System.out.println(result.getClass()); // prints "class com.google.gson.JsonArray"
Run Code Online (Sandbox Code Playgroud)

PS

在上面的代码中,为了便于阅读和复制粘贴,我创建了内联的Gson实例(new GsonBuilder().create()).实际上,每次需要转换列表时,很可能不会创建新的Gson实例,而是在之前的某个时间创建一个实例,以便重用.