您正在尝试从 JSONArray 创建一个非 Array(Collection) 对象。错误很明显:GSON 期待一个对象的开头,但却找到了一个数组的开头。
查看下面的文档页面,了解如何使用 GSON 使用 Array 和 Collection 类型
https://sites.google.com/site/gson/gson-user-guide#TOC-Collections-Examples
从文档:
数组示例
Gson gson = 新 Gson(); 整数 [] 整数 = {1, 2, 3, 4, 5}; 字符串[] 字符串 = {"abc", "def", "ghi"};
(序列化) gson.toJson(ints); ==> 打印 [1,2,3,4,5] gson.toJson(strings); ==> 打印 ["abc", "def", "ghi"]
(反序列化) int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class); ==> ints2 将与 ints 相同
我们还支持多维数组,具有任意复杂的元素类型集合示例
Gson gson = 新 Gson(); 集合 ints = Lists.immutableList(1,2,3,4,5);
(序列化) String json = gson.toJson(ints); ==> json 是 [1,2,3,4,5]
(反序列化) Type collectionType = new TypeToken>(){}.getType(); 集合 ints2 = gson.fromJson(json, collectionType); ints2 与 ints 相同
相当可怕:注意我们如何定义集合的类型不幸的是,在 Java 中无法解决这个问题
收藏限制
可以序列化任意对象的集合但不能从中反序列化 因为用户无法指示结果对象的类型 在反序列化时,Collection 必须是特定的泛型类型 所有这些都是有道理的,而且很少有问题w> 遵循良好的 Java 编码实践