2012-09-28 4 views
0

저는 루트 요소에 따라 관계의 직렬화를 허용하는 Jackson의 방법을 찾고 있습니다. 예를 들어, 나는 진정한 부모/자식이 아닌 관계를 가지고 있습니다. 두 엔터티 모두 쿼리 할 수 ​​있습니다.잭슨 일대일 직렬화

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

조금 더 확장 할 수 있습니까? 어떤 구현이이 예와 함께 deserialize되는지를 해결하려고하지는 않습니다. 주소를 직렬화 할 때 클라이언트는 원하지만 클라이언트 주소는 원하지 않습니다. 그리고 클라이언트를 deserialize 할 때 주소가 필요하지만 주소는 필요 없습니다. – SchraderMJ11