如何用Jackson编写展平List序列化器?

时间:2019-02-03 17:53:36

标签: java spring jackson

我正在尝试使用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来完成该任务,或者我必须使用自定义算法编写一个全新的反序列化器?

1 个答案:

答案 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

现在,您需要通过以下方式更新类POJOclass ListWrapper<T> { private List<T> elements; // getter, setter, toString, etc }

A

B