0

在我的 Spring Boot/Kotlin 项目中,我试图让 JSON 转换器忽略我的休息控制器响应中的空值。

我尝试在我的 application.yml 中设置以下内容:

  spring:
    jackson:
      default-property-inclusion: non_null

我也尝试过提供一个@Bean类型Jackson2ObjectMapperBuilder并进行@ObjectMapper配置,.serializationInclusion(JsonInclude.Include.NON_NULL)但它仍在序列化所有空属性。

使用 Spring Boot 2.3.0、Kotlin 1.3.72、AdoptOpenJDK 13

4

1 回答 1

6

好吧,我通过从头开始创建一个新项目并从当前项目添加部分直到我得到异常行为来发现问题。

原来问题出在用于添加 CORS 映射的类中:

@EnableWebMVC
@Configuration
class WebConfiguration : WebMvcConfigurer {
    override fun addCorsMappings(registry: CorsRegistry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
    }
}

我想我添加@EnableWebMVC了一个示例,但是该类与类不在类层次结构的同一部分@RESTController,因此看起来这就是未应用对象映射器配置的原因。我对 Spring/Boot 的内部布线了解得不够多,无法告诉你原因。

一旦我删除@EnableWebMVC并允许 Spring Boot 通过自动配置将其添加到应用程序类中,它就会按预期工作......

于 2020-07-09T22:41:25.777 回答