一尘不染

Jackson JSON序列化,通过级别定义避免递归

json

我使用Jackson库将我的pojo对象序列化为JSON表示形式。例如,我有A类和B类:

class A {
  private int id;
  private B b;

  constructors...
  getters and setters
}

class B {
  private int ind;
  private A a;

  constructors...
  getters and setters
}

如果我要序列化类A中的对象,则有可能在序列化时获得递归。我知道我可以通过使用停止它@JsonIgnore

是否可以通过深度级别限制序列化?

例如,如果级别为2,则序列化将以这种方式进行:

  • 序列化一个,级别= 0(0 <2正常)->序列化
  • 序列化ab,级别= 1(1 <2 ok)->序列化
  • 序列化ABA,级别= 2(2 <2不正确)->停止

提前致谢。


阅读 409

收藏
2020-07-27

共1个答案

一尘不染

我最近遇到了一个类似的问题:杰克逊-具有双向关系的实体的序列化(避免循环)

因此,解决方案是升级到Jackson 2.0,并在类中添加以下注释:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, 
                  property = "@id")
public class SomeEntityClass ...

这很完美。

2020-07-27