一尘不染

Jackson-具有双向关系的实体的序列化(避免循环)

json

我有两个实体:

Parent {
   Child[] children;
}

and

Child {
   Parent parent;
}

我知道@JsonBackReference@JsonManagedReference。如果我要序列化的实例,那么它们很好Parent

但是我还需要传输的实例,Child并且我想parent填充该字段。

换一种说法:

  1. 在序列化Parent时应该有,children但是其父字段可能为空(可以通过使用json参考注释解决)。
  2. 在序列化时,Child它应该parent带有它们children(但children不必parent填充。)

有没有一种使用标准Jackson功能来解决它​​的方法?

即跳过已经序列化的实体的序列化,而不是标记符合或不符合序列化条件的字段。


阅读 228

收藏
2020-07-27

共1个答案

一尘不染

Jackson 2.0确实支持完整的循环对象引用。有关示例,请参见“ Jackson
2.0发布

”(“处理任何对象图,甚至循环图!”部分)。

基本上,@JsonIdentityInfo对于需要id / idref样式处理的类型,您将需要使用new
。在您的情况下,它既是类型Parent又是Child类型(如果一个扩展了另一个,只需将其添加到超级类型中就可以了)。

2020-07-27