gpt4 book ai didi

java - Jackson 序列化 - 过滤后删除空属性

转载 作者:行者123 更新时间:2023-12-02 05:11:58 24 4
gpt4 key购买 nike

我使用的是 Jackson 2.4.3 和 ObjectMapper,它配置为排除空属性 (JsonInclude.Include.NON_EMPTY),但我也使用自定义 PropertyFilter 在序列化过程中,某些属性被此过滤器排除(不写入)。排除以前为空的属性效果很好,但如果属性值被我的过滤器跳过,仍然会出现在 JSON 中。最后我得到了带有空属性的 JSON 文件,这是非常 Not Acceptable :

{"configurationPropertyList":{ 
"someProperty":{},
"someList":[{}, {}, {}]
}
}

有什么办法可以摆脱这些空属性吗?

我还要补充一点,最后 JSON 相当大且复杂,出于性能原因,JSON 应该由 Jackson 自己生成,无需任何额外的工作。我正在尝试找到尽可能简单的解决方案。

最佳答案

这里的问题是过滤适用于输入 Java 对象,而不是构造的 JSON;这意味着虽然对象的大部分内容可能被过滤(并且结果 JSON 对象为空),但对象本身并不为空。

有一些正在进行的工作(将在 2.5 中完成)可以允许更好的处理,并且可能至少可以处理 java.util.Map 的过滤的嵌套性质。但目前还没有进一步修剪内容的自动化解决方案。

关于java - Jackson 序列化 - 过滤后删除空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com