如何覆盖 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;
我的属性 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;