我正在尝试使用Jackson将特定结构的JSON反序列化为Java类。 我有几个这样的课程:
__flash
我从外部系统获取JSON,如下所示:
class A {
private int number1;
private List<X> list1;
private int number2;
}
class X {
private String field1;
private double value1;
}
class B {
private String name2;
private List<Y> list2;
}
class Y {
private String field2;
}
我只想编写一个自定义反序列化器,可以以一种通用的方式摆脱这个 elements 级别(我的意思是为所有类都拥有一个反序列化器)。 有没有简单的方法可以扩展StdDeserializer来完成该任务,或者我必须使用自定义算法编写一个全新的反序列化器?
答案 0 :(得分:0)
您可以看一下这个问题:Jackson - deserialize inner list of objects to list of one higher level,它非常相似。我已经实现了自定义反序列化器,可以将其与内部列表一起用于许多不同类型。您的示例sys.path
可能如下所示:
POJO
编辑
如果您不想使用任何注释或自定义反序列化,则需要创建适合class A {
private int number1;
@JsonDeserialize(using = InnerListDeserializer.class)
private List<X> list1;
private int number2;
// getters, setters
}
的{{1}}结构。您需要创建中间POJO
:
JSON
现在,您需要通过以下方式更新类POJO
和class ListWrapper<T> {
private List<T> elements;
// getter, setter, toString, etc
}
:
A
和
B