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)。
似乎这可能是一个错误,但想要在提交问题之前验证我没有错过任何内容。
答案 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
}
```