Spring에서는 특정 요구 사항에 맞게 ObjectMapper를 구성할 수 있습니다. 이는 JSON 데이터의 직렬화 및 역직렬화 동작을 제어하려는 경우 특히 유용합니다.
일반적인 시나리오 중 하나는 명시적으로 주석을 달지 않는 한 특정 속성을 직렬화에서 제외하는 것입니다. 이를 달성하기 위해 다음 단계를 따릅니다.
사용자 정의 ObjectMapper 생성:
public class CompanyObjectMapper extends ObjectMapper { public CompanyObjectMapper() { super(); setVisibilityChecker(getSerializationConfig() .getDefaultVisibilityChecker() .withCreatorVisibility(JsonAutoDetect.Visibility.NONE) .withFieldVisibility(JsonAutoDetect.Visibility.NONE) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT)); } }
Spring의 사용자 정의 ObjectMapper를 포함합니다. 구성:
<bean>
사용자 정의 ObjectMapper를 사용하도록 Spring MVC 구성:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="jacksonObjectMapper" /> </bean> </list> </property> </bean>
그러나 Spring 버전 3.0.5 및 Jackson을 사용하는 경우 이 접근 방식이 예상대로 작동하지 않을 수 있습니다. 1.8.0. 이 문제를 해결하려면 Spring Boot 및 Jackson 2.4.6 이상에서 다음 주석 기반 구성을 사용하는 것이 좋습니다.
@Configuration public class JacksonConfiguration { @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true); return mapper; } }
이 구성을 사용하면 ObjectMapper가 @가 있는 속성만 직렬화할 수 있습니다. 원하는 요구 사항을 충족하는 JsonProperty 주석입니다.
위 내용은 사용자 정의 JSON 직렬화 및 역직렬화를 위해 Spring에서 ObjectMapper를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!