Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson序列化时解析循环引用:双向_Java_Json_Hibernate_Serialization_Jackson - Fatal编程技术网

Java 使用Jackson序列化时解析循环引用:双向

Java 使用Jackson序列化时解析循环引用:双向,java,json,hibernate,serialization,jackson,Java,Json,Hibernate,Serialization,Jackson,我有一种情况,两个对象之间存在循环引用,这导致在使用jackson序列化任何对象时出错。以下是示例情况: Class A { private B b; } Class B { private A a; } Jackson以@JsonManagedReference和@JsonBackReference注释的形式为这种情况提供了解决方案。当一个人只想在结果json中引用另一个类中的一个类时,该解决方案工作得非常好。例如,以下代码起作用: Class A { @JsonMa

我有一种情况,两个对象之间存在循环引用,这导致在使用jackson序列化任何对象时出错。以下是示例情况:

Class A {
    private B b;
}
Class B {
    private A a;
}
Jackson以@JsonManagedReference和@JsonBackReference注释的形式为这种情况提供了解决方案。当一个人只想在结果json中引用另一个类中的一个类时,该解决方案工作得非常好。例如,以下代码起作用:

Class A {
    @JsonManagedReference
    private B b;
}
Class B {
    @JsonBackReference
    private A a;
}
这将在尝试序列化A时引用B

我希望反过来也是正确的。我希望在序列化A时使用字段b,在序列化b时使用字段A。这就是我尝试过的

Class A {
    @JsonManagedReference("abc")
    @JsonBackReference("xyz")
    private B b;
}
Class B {
    @JsonBackReference("abc")
    @JsonManagedReference("xyz")
    private A a;
}
这不管用。如何实现这一点?

从2.0版开始,Jackson就为这个问题提供了解决方案

@引入JsonIdentityInfo注释就是为了解决这个问题