现在我的代码非常简单
// list is a List<Integer>
JsonArray arr = new JsonArray();
for(int i : list) {
array.add(i);
}
我有些惊讶地浏览API时没有找到一种更少手动、更实用的方式来做这件事。我期望有一个addRange
、addArray
构造函数,可以从Collection
转换成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"
附言:
在上述代码中,我使用内联方式创建了Gson实例(new GsonBuilder().create()),这是出于可读性和复制粘贴的考虑。在实践中,你很可能不会每次需要转换列表时都创建一个新的Gson实例,而是提前创建一个实例以便重用。
int[] numbers = { 1, 1, 2, 3, 5, 8, 13 }; JsonElement jsonTree = new Gson().toJsonTree(numbers); System.out.println(jsonTree);
- Ray Hulha
i
改成Integer
类型不是更合理吗?这样可以避免双重转换。否则,上述代码已经相当清晰和高效了,为什么要改呢? - Hot Licks