【问题标题】:How can I overwrite a application.yml in a class attribute?如何覆盖类属性中的 application.yml?
【发布时间】:2021-12-30 11:36:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: java json spring jackson


    【解决方案1】:

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

    @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;
    

    【讨论】:

    • 嘿,乔奥!谢谢你的时间!我试过使用@JsonInclude(JsonInclude.Include.ALWAYS),但似乎属性文件会覆盖它。那么,唯一的选择是通过 objectMapper?
    • 那我就答应了。
    • 还有一个问题:我应该如何调用 objectMapper 到类?
    • 这取决于您如何序列化该类的对象。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2016-11-06
    • 1970-01-01
    • 2012-08-02
    • 2018-09-05
    • 2016-07-20
    • 2017-08-22
    • 2013-07-24
    相关资源
    最近更新 更多