使用json反序列化java泛型集合

时间:2011-03-24 15:43:06

标签: java json hibernate generics gson

2 个答案:

答案 0 :(得分:2)

类型java.util.Collections$CheckedRandomAccessList是由另一个列表的Collections.checkedList生成的包装器,用于确保添加到列表中的任何内容与相应的类型签名匹配。除非您有某种方式指定如何创建支持列表它应该检查的类型(也称为java.lang.Class的实例),否则没有足够的信息来构造一个。

要解决此问题,可以将"java.util.Collections$CheckedRandomAccessList"更改为"java.util.ArrayList",并使用适当的防护类型调用Collections.checkedList反序列化的结果。

为防止问题再次发生,如果您的列表不是instanceof ArrayList<?>,可以在序列化之前执行以下

List<Object> mySerializableList = new ArrayList<Object>(myList);

答案 1 :(得分:0)

你拥有的JSON看起来不像简单的集合,而是像一个具有属性和集合的bean。所以这可能需要改变。 无论使用何种库,您的JSON都必须与要映射的对象匹配。

如果你无法让它与Gson一起工作,那么你可以尝试使用其他更强大的数据绑定功能。