Hoo*_*oof 5 json jackson lazylist deserialization
我有一个对象,它使用一个org.apache.commons.collections.list.LazyList字段,它是序列化的ti JSON.JSON看起来像这样:
"myObject": ["org.apache.commons.collections.list.LazyList", [
{
"attr1": "asdasd",
"attr2": 1234
}
]],
Run Code Online (Sandbox Code Playgroud)
对象字段如下所示:
List<MyObject> myObject = ListUtils.lazyList(new ArrayList(), {new MyObject()} as Factory)
Run Code Online (Sandbox Code Playgroud)
然而,尝试使用Jackson ObjectMap反序列化上述JSON失败了,因为它无法找到LazyList的默认构造函数 - 这是有道理的.但是,如何指定此字段的反序列化方式?
错误信息:
没有[集合类型的默认构造函数; class org.apache.commons.collections.list.LazyList,包含[simple type,class foo.bar.MyObject]]
赏金约束:
要收集赏金,需要使用自定义jackson反序列化器来回答这个问题 - 自定义反序列化器必须不是特定于字段的!因此,没有使用特定类型的LazyList的自定义实现的解决方案将充分回答这个问题.
下面的解决方案适用于 List 和 Map 集合对象,它也可能适用于您的对象。
@JsonDeserialize(contentAs=MyObject.class)
private List<MyObject> myObject = ListUtils.lazyList(new ArrayList(), {new MyObject()} as Factory);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |