【发布时间】:2017-11-09 16:12:26
【问题描述】:
我正在尝试为通用列表创建自定义反序列化程序。假设我得到了 B 类的 json 表示:
public class B{
List<A> listObject;
}
其中 A 是我仅在运行时看到的其他类。我想创建一个反序列化器,它能够将 listObject 的类型推断为具有内部类型 A 的列表并将其反序列化,而不是使用默认的 hashmap 反序列化器。
我尝试使用上下文反序列化器,类似于here 的建议 然后将其添加为 List 的自定义反序列化器
addDeserializer(List.class, new CustomListDeserializer())
但我不确定我应该如何读取 json 并在反序列化函数中创建列表(在上面的 Wrapper 示例中它非常简单,您读取值并将其设置为值字段,但如果我的 ' wrapper' 是 List,如何读取值并添加它们?)
我尝试将 readValue 与由 constructCollectionType(List.class, valueType) 构造的 CollectionType 一起使用,但随后我进入了无限循环,因为 readValue 使用了调用它的反序列化器。
有什么想法吗?
【问题讨论】:
标签: json generics serialization jackson deserialization