杰克逊 - 具有双轴关系的实体的序列化(避免循环)



我有两个实体:

Parent {
   Child[] children;
}
and 
Child {
   Parent parent;
}

我知道@JsonBackReference@JsonManagedReference.如果我序列化Parent实例,它们很好.

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

换句话说:

  1. 在序列化Parent时,它应该有children,但它们的父字段可能为空(可以使用 json 引用注释来解决)。
  2. Child的序列化中,它应该parentchildren(但children不必填充parent

有没有办法使用标准的杰克逊功能来解决它?

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

Jackson 2.0 确实支持完整的循环对象引用。有关示例,请参阅"Jackson 2.0 发布"("处理任何对象图,甚至是循环图!"一节)。

基本上,您需要对需要 id/idref 样式处理的类型使用新@JsonIdentityInfo。在您的情况下,这将是ParentChild类型(如果一个扩展另一个,只需将其添加到超类型即可)。

Jackson 2 库中提供了非常方便的接口实现,作为

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Parent { ....
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Child { ....

(马文)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.0.2</version>
</dependency>

@StaxMan提供了一个很好的链接,可以从

相关内容

  • 没有找到相关文章

最新更新