如何在弹簧启动应用程序中配置Jackson而不覆盖纯java中的弹簧默认设置

der*_*itz 9 spring jackson spring-boot

在我的春季启动应用程序中,我使用Jackson通过注入ObjectMapper所需的位置来序列化对象.我找到了这个答案:https://stackoverflow.com/a/32842962/447426 但是这个创建了一个新的映射器 - 带有jacksons默认设置.

另一方面,我在官方文件中发现了这一点.我真的不明白.没有示例代码.

那么如何在Springs默认对象映射器的基础上配置弹簧ObjectMapper?

注入时,此配置应在"ObjectMapper"上处于活动状态.

pvp*_*ran 13

你应该用Jackson2ObjectMapperBuilderCustomizer

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() {
        return new Jackson2ObjectMapperBuilderCustomizer() {

            @Override
            public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
               jacksonObjectMapperBuilder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
               // Add your customization
               // jacksonObjectMapperBuilder.featuresToEnable(...)      
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*inC 5

另一方面,我在官方文档中找到了这个。我没有真正理解。没有示例代码。

这只是说您只需要在application.properties文件中设置正确的属性即可启用或禁用各种 Jackson 功能。

spring.jackson.mapper.default-view-inclusion=false
spring.jackson.deserialization.fail-on-unknown-properties=false
Run Code Online (Sandbox Code Playgroud)