2011-10-13 2 views
0

사용자가 직렬화 때 출력이jackson 직렬화, 속성에 사용할 하위 속성을 나타내는 주석이 있습니까?

{"name": "Mike", "company": {"name": "Enterprise Co.Ltd", "address": "....." }} 

해야한다,이

class User { 
    @JsonMask({"name", "address"}) 
    private Company company; 
    private String name; 
    //... 
} 
class Company { 
    private String name; 
    private String address; 
    private Set<User> employers; 
    //... 
} 

같은 것을보고 싶어하고 비용이 많이 드는 부분 Set<User> 및 기타 하위 속성은 무시됩니다.

저는 아직 잭슨에 익숙하지 않고 구출 된 @JsonIgnore 만 찾았습니다. 그렇지만 나는 그 모든 @JsonIgnored 속성을 영원히 잃을 것입니다. 이 문제를 해결할 수있는 우아한 방법이 있습니까?

참고 : 저는 Hibernate JPA를 사용하고 있습니다. 따라서 모델 클래스에는 깊은 관계 체인과 순환 참조가 있으므로 많은 JSON 직렬화가 항상 지옥으로 연결됩니다 ... @ JsonManagedRef와 친구,하지만 그저 순환 문제를 해결하고 많은 설정으로 이어지고 아주 가독하지 않습니다.

답변

0

은 구조 만 @JsonIgnore를 발견,하지만 난 당신이를 직렬화 할 때 원치 않는 Company 특성은 무시하려 할 것이 그 어느

에 대한 모든 @JsonIgnored 속성을 잃게 User, 그렇지 않으면 Company을 serialize 할 때 일어나는 것과는 대조적으로 직접. 그것은 다른 직렬 인스턴스를 사용하는 것이 가능하면 User 직렬화 때

즉, 두 개의 서로 다른 ObjectMapper 경우,이 문제를 해결하는 하나의 방법은, 적절한 @JsonIgnore을 적용 할 mix-in를 사용하는 것이다. 그런 다음 동일한 serializer를 사용하지 말고 Company을 serialize 할 때 혼합합니다.

하나의 시리얼 라이저 만 있으면되는 경우에는 사용자 정의 직렬화가 필요합니다.

관련 문제