복붙노트

[SPRING] Jackson2ObjectMapperBuilder를 사용하여 필드 가시성 ANY

SPRING

Jackson2ObjectMapperBuilder를 사용하여 필드 가시성 ANY

나는 spring-boot를 사용하고 생성 된 ObjectMapper를 커스터마이즈하고 싶다.

내가하고 싶은 것은 getter 나 setter가없는 객체를 직렬화 할 수 있어야한다는 것입니다. JsonAutoDetect.Visibility.ANY를 ObjectMapper에두기 전에이 작업을 수행 할 수 있습니다.

하지만 현재 노출중인 Jackson2ObjectMapperBuilder 빈을 사용하여이 기능을 어떻게 활성화 할 수 있습니까?

해결법

  1. ==============================

    1.configure (ObjectMapper) 메소드를 오버라이드하는 Jackson2ObjectMapperBuilder 서브 클래스를 사용할 수 있습니다 :

    configure (ObjectMapper) 메소드를 오버라이드하는 Jackson2ObjectMapperBuilder 서브 클래스를 사용할 수 있습니다 :

    @Bean
    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
        return new Jackson2ObjectMapperBuilder() {
    
            @Override
            public void configure(ObjectMapper objectMapper) {
                super.configure(objectMapper);
                objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
            }
    
        };
    
    }
    
  2. ==============================

    2.Spring Boot가 제공하는 spring.jackson. * 속성을 통해 ObjectMapper를 구성 가능한 상태로 유지하려면 자체 Jackson2ObjectMapperBuilder bean을 정의하지 않는 것이 좋습니다. 자세한 내용은 JacksonAutoConfiguration 클래스의 JacksonObjectMapperBuilderConfiguration을 확인하십시오.

    Spring Boot가 제공하는 spring.jackson. * 속성을 통해 ObjectMapper를 구성 가능한 상태로 유지하려면 자체 Jackson2ObjectMapperBuilder bean을 정의하지 않는 것이 좋습니다. 자세한 내용은 JacksonAutoConfiguration 클래스의 JacksonObjectMapperBuilderConfiguration을 확인하십시오.

    대신 할 수있는 일은 다음과 같습니다.

    @Bean
    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder mapperBuilder) {
        return mapperBuilder.build().setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
    }
    
  3. ==============================

    3.나는 다른 설정으로 하루 반을 보내고 있습니다. 그래서 나는 그것을 작동시킬 수있다. (1.3.2.RELEASE)

    나는 다른 설정으로 하루 반을 보내고 있습니다. 그래서 나는 그것을 작동시킬 수있다. (1.3.2.RELEASE)

    다음 Jackson2ObjectMapperBuilder objectMapperBuilder 솔루션은 다음과 같습니다. spring.jackson.serialization.indent_output : 속성에서 true가 무시되었습니다.

    마침내 나는 끝났다.

     @Autowired(required = true)
     public void configeJackson(ObjectMapper objectMapper) {
         objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)
                .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
     }
    

    그러나이 모든 것이 나를위한 퍼즐입니다. 나는이 마술에 대한 어떤 설명에 대해서 질문을 써서 어떤 문제를 해결하고 문제를 해결하려고하지 않았다. 시행 착오 방법 : 웹 MVC 설정이 어떻게 작동하는지 이해하기위한 스프링 부트 문서가 있습니까?

  4. from https://stackoverflow.com/questions/29807879/jackson2objectmapperbuilder-enable-field-visibility-any by cc-by-sa and MIT license