如何覆盖 class 属性中的 application.yml?

How can I overwrite a application.yml in a class attribute?

我的属性 yml 文件中有这个 属性:

jackson:
    default-property-inclusion: non_null
    serialization:
        write-empty-json-arrays: false
    serialization-inclusion: NON_EMPTY

它的作用是禁止JSON空数组。但是对于 class 中的特定属性,我希望能够 return 将其清空。有没有办法或 属性 我可以用来做这个? 谢谢!

唯一的方法是创建另一个 ObjectMapper,然后使用那个来序列化特定的 class。

@Configuration
class JacksonConfiguration {

    @Bean
    fun mainObjectMapper() = jacksonObjectMapper().apply {
        setSerializationInclusion(JsonInclude.Include.NON_NULL)
        setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
    }

    @Bean
    fun otherObjectMapper() = jacksonObjectMapper().apply {
        setSerializationInclusion(JsonInclude.Include.NON_NULL)
    }
}

然而,对于这么简单的事情,这似乎有点过分了。


另一个可能最适合您的选项是使用 @JsonInclude 注释。您将按如下方式使用它:

@JsonInclude(JsonInclude.Include.ALWAYS)
List<String> propertyToSerializeEvenIfEmptyOrNull;