Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 杰克逊一对一连载_Java_Json_Jackson_Cycle_Bidirectional Relation - Fatal编程技术网

Java 杰克逊一对一连载

Java 杰克逊一对一连载,java,json,jackson,cycle,bidirectional-relation,Java,Json,Jackson,Cycle,Bidirectional Relation,我正在Jackson中寻找一种方法,允许根据根元素对关系进行序列化。例如,我的关系不是真正的父母/孩子。两个实体都可以查询 Address { @JsonBackReference Company company; String line1; String city; String state; String zip; String country; } Company { Address mainAddress; Li

我正在Jackson中寻找一种方法,允许根据根元素对关系进行序列化。例如,我的关系不是真正的父母/孩子。两个实体都可以查询

Address {
    @JsonBackReference
    Company company;
    String line1;
    String city;
    String state;
    String zip;
    String country;
}

Company {
    Address mainAddress;

    List<Address> locations;
    String name;
}
地址{
@JsonBackReference
公司;
字符串行1;
字符串城市;
字符串状态;
拉链;
弦国;
}
公司{
主地址;
列出地点;
字符串名;
}

JsonBackReference使得序列化为json时没有循环引用。然而,这也导致我不知道公司的地址。如果我是上市公司,那么地址会回来,一切都很好。但如果我列出地址,我希望看到该公司被序列化。有没有办法做到这一点?

您需要使用Jackson的
@JsonTypeInfo
进行序列化和反序列化。请查看以了解更多详细信息。如果您有静态的内部类,请尽量避免使用
1.9.8
版本(这有一个bug,会导致StackOverflowerError)。

您能对此进行一点扩展吗?我不想用这个例子来解决哪个实现是反序列化的。序列化地址时,我希望它是客户端,而不是客户端地址。当我反序列化一个客户端时,我想要它的地址,而不是地址的客户端。