现在我的代码就是
// list is a List<Integer>
JsonArray arr = new JsonArray();
for(int i : list) {
array.add(i);
}
通过API我感到有点震惊,我没有找到一个更少手动,更实用的方法来做到这一点。我希望addRange
,addArray
构造函数从Collection
转到JsonArray
,等等。是否有一个,或者是否有一些基本限制使得这不可能?
答案 0 :(得分:10)
如果将列表传递给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"
P.S。
在上面的代码中,为了便于阅读和复制粘贴,我创建了内联的Gson实例(new GsonBuilder()。create())。实际上,每次需要转换列表时,很可能不会创建新的Gson实例,而是在之前的某个时间创建一个实例,以便重用。