>Java >java지도 시간 >@JsonProperty 주석이 달린 요소만 직렬화하도록 Spring의 ObjectMapper를 구성하는 방법은 무엇입니까?

@JsonProperty 주석이 달린 요소만 직렬화하도록 Spring의 ObjectMapper를 구성하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-02 15:19:11593검색

How to Configure Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Elements?

Spring에서 ObjectMapper를 구성하는 방법

문제:

ObjectMapper를 구성하려고 합니다. @JsonProperty로 주석이 달린 요소만 직렬화하는 Spring입니다. 그러나 권장 지침을 따랐음에도 불구하고 NumbersOfNewEvents 클래스는 직렬화될 때 여전히 모든 속성을 포함합니다.

설명:

사용자 정의 CompanyObjectMapper에서 가시성 검사기를 설정했습니다. 기본적으로 모든 필드와 getter/setter를 숨깁니다. 이렇게 하면 ObjectMapper가 newAccepts 및 openRequests 필드에 액세스하고 직렬화하는 것을 방지할 수 있습니다.

해결책:

원하는 결과를 얻으려면 보다 타겟화된 접근 방식을 사용하여 가시성을 구성할 수 있습니다. 체커. 예는 다음과 같습니다.

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        SerializationConfig config = getSerializationConfig();
        config.withView(Some.class)   // Specify which view to use
             .withVisibility(JsonAutoDetect.Visibility.NONE)
             .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    }
}

이 구성을 사용하면 @JsonProperty 주석이 있는 속성을 직렬화하는 동시에 다른 필드는 숨길 수 있습니다.

Spring Boot 구성:

Spring Boot 및 Jackson 2.4.6 이상을 사용하는 경우 다음을 사용할 수 있습니다. 구성:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  // Enable default typing for polymorphic types
        mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);      // Allow serialization of fields
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);  // Enable default view inclusion
        return mapper;
    }
}

이 구성은 다형성 유형에 대한 기본 입력을 활성화하고 모든 필드의 직렬화를 허용하며 기본 뷰 포함을 활성화합니다.

위 내용은 @JsonProperty 주석이 달린 요소만 직렬화하도록 Spring의 ObjectMapper를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.