2016-10-27 3 views
0

브라우저에 json으로 렌더링 할 클래스의 객체 목록이 있습니다. 이제 특정 조건이 충족되지 않으면 json 응답에서 제외하려는 객체의 특정 속성이 있습니다.일부 조건을 기반으로 json의 필드를 추출하십시오.

이러한 속성은 목록의 일부 개체에 있으므로 해당 목록의 다른 개체에는 없습니다.

어떻게 달성 할 수 있습니까?

광산은 봄 부팅 응용 프로그램입니다. 잭슨이 사용되고 있습니다.

저는 Entity를 Bean으로 변환하고 ResponseEntity를 사용하여 bean을 json으로 변환하기 위해 Transformer를 사용하고 있습니다.

가능한 해결책을 제안하십시오.

감사합니다.

답변

3

제외 할 값을 null로 설정 한 다음 @JsonInclude 주석을 사용하여 모든 null 값을 억제하십시오. 버전 2.x에서

public class Foo { 
    private String field1; 
    private String field2; 

    @JsonInclude(Include.NON_NULL) 
    private String field3; 
    ... 
    ... 
} 

을 (전체 개체에 대한 null 값을 제외한 반대로)

@JsonInclude(Include.NON_NULL) 
class Foo { 
    String bar; 
} 

너무 특정 필드에 대한 null 값을 제외 할 수 있습니다 + 이 특수 효과의 구문은 다음과 같습니다.

@JsonInclude(JsonSerialize.Inclusion.NON_NULL) 

또는 당신은 또한 글로벌 옵션 설정할 수 있습니다 : 봄 프로젝트에서

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 

objectMapper 클래스 ObjectMapper의 싱글 인스턴스 인 다음 중 하나를 수행 할 수 있습니다 @Autowired 또는 제가 적용

+0

의 ApplicationContext에서 얻을 내 속성 위에이 annotaion. 하지만 그 주석에 컴파일 오류가 발생했습니다. 그러나 jackson jar가 내 maven 의존성 목록에 있습니다. 어떻게 해결할 수 있습니까? –

+0

내가 사용하고 잭슨 - 주석 - 2.6.4.jar –

+0

좋아, 나는 그것이이 주석을 사용하여 작업 있어요 : @JsonSerialize는 을 (= Inclusion.NON_NULL 포함)하지만 JsonSerialize가되지 않는 클래스입니다 말한다. 우리에게는 더 나은 대안이 있습니까? –

관련 문제