我正在使用Jackson 2.4.3和ObjectMapper
,它被配置为排除空属性(JsonInclude.Include.NON_EMPTY
),但我在序列化过程中也使用自定义PropertyFilter
和一些属性被此过滤器排除(未写入)。
排除以前的空属性工作正常,但如果我的过滤器跳过属性值仍然出现在JSON中。
最后,我有一个空属性的JSON文件是非常不可接受的:
{"configurationPropertyList":{
"someProperty":{},
"someList":[{}, {}, {}]
}
}
有没有办法摆脱那些空洞的属性?
我还要补充一点,最后JSON非常庞大和复杂,出于性能原因,JSON应该由Jackson本身生成,而无需任何额外的工作。我试图找到尽可能简单的解决方案。
答案 0 :(得分:2)
这里的问题是过滤适用于输入Java对象,而不适用于构造的JSON;这意味着尽管可以过滤大部分对象内容(并且结果JSON Object为空),但对象本身不为空。
有一些正在进行的工作(要完成2.5)可能允许更好的处理,并且可能至少在java.util.Map
处理嵌套的过滤性质。但是现在,没有自动解决方案来进一步修剪内容。