2012-09-28 82 views
0

我正在寻找一种方式在杰克逊允许序列化的关系取决于根元素。例如,我有一种不是真正父母/孩子的关系。两个实体都可以被查询。杰克逊一对一序列化

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

Company { 
    Address mainAddress; 

    List<Address> locations; 
    String name; 
} 

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

回答

0

您需要使用Jackson的@JsonTypeInfo进行序列化和反序列化。请参阅Jackson's documentation了解更多详情。尽量避免1.9.8版本,如果你有静态内部类(这有一个错误,并导致StackOverflowError)。

+0

你可以扩展一下吗?我没有试图通过这个例子来解决哪个实现是反序列化的。序列化地址时,我想要它是客户端,但不是客户端地址。当我反序列化客户端时,我想要它的地址,但不是地址'客户端。 – SchraderMJ11