【问题标题】:The spring.jackson.serialization-inclusion environment setting does not seem to be workingspring.jackson.serialization-inclusion 环境设置似乎不起作用
【发布时间】:2015-12-15 18:29:23
【问题描述】:

Spring Boot 在 1.3 中引入了一个新特性,用于定义 Jackson 在序列化期间包含哪些属性。问题For Spring Boot 1.2.3, how to set ignore null value in JSON serialization? 中指出了此功能。但是,它似乎对我不起作用。我正在使用 Spring-Boot 版本 1.3.0.M5。除了将该属性添加到我的 application.properties 文件之外,是否需要进行其他配置?

我深入研究了这个问题,可以看到当我的基于 Spring Boot 的应用程序加载时,JacksonAutoConfiguration 对象实际拾取属性的位置。据我所知,消息转换器(即 MappingJackson2HttpMessageConverter)或构建它们的工厂似乎没有使用此构建器来设置 ObjectMapper。因此,使用的 ObjectMapper 将其 _serializationConfig._serializationInclusion 属性设置为 null(在我的情况下不是 NON_NULL)。

这似乎是一个错误,但想在提交问题之前验证我没有遗漏任何内容。

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    我在使用带有 kotlin 的 spring-boot 2.0.3 时遇到了这个问题。根本原因是当spring boot init默认MappingJackson2HttpMessageConverter它不使用Jackson2ObjectMapperBuilderJacksonAutoConfiguration创建的实例。因此,您可以自己提供MappingJackson2HttpMessageConverter 并使用自动配置的Jackson2ObjectMapperBuilder。代码:

    ```java

    @Autowired
    lateinit var jackson2ObjectMapperBuilder: Jackson2ObjectMapperBuilder
    
    @Bean
    fun mappingJackson2HttpMessageConverter(): MappingJackson2HttpMessageConverter {
        var mappingJackson2HttpMessageConverter = MappingJackson2HttpMessageConverter()
        mappingJackson2HttpMessageConverter.objectMapper = jackson2ObjectMapperBuilder.build()
        return mappingJackson2HttpMessageConverter
    }
    

    ```

    【讨论】:

      【解决方案2】:

      问题是由扩展 RepositoryRestMvcConfiguration 引起的。我们的应用程序配置类之一已扩展为使用 configureRepositoryRestConfiguration 方法配置 RepositoryRestConfiguration。这样做是为了让我们的实体 ID 序列化。(我们还没有准备好迁移到 HATEOAS)。更改该类以扩展 RepositoryRestConfigurerAdapter 而是解决了该问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-19
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多