spring.jackson.serialization-inclusion环境设置似乎不起作用

时间:2015-09-18 14:46:18

标签: spring-boot

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)。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

当与kotlin一起使用spring-boot 2.0.3时遇到此问题。根本原因是,当spring boot init默认为MappingJackson2HttpMessageConverter时,它没有使用Jackson2ObjectMapperBuilder创建的JacksonAutoConfiguration实例。因此,您可以自己提供一个MappingJackson2HttpMessageConverter并使用自动配置的Jackson2ObjectMapperBuilder。代码:

```java

@Autowired
lateinit var jackson2ObjectMapperBuilder: Jackson2ObjectMapperBuilder

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

```