杰克逊序列化 - 过滤后摆脱空属性

时间:2014-12-02 22:11:52

标签: java json jackson fasterxml

我正在使用Jackson 2.4.3和ObjectMapper,它被配置为排除空属性(JsonInclude.Include.NON_EMPTY),但我在序列化过程中也使用自定义PropertyFilter和一些属性被此过滤器排除(未写入)。 排除以前的空属性工作正常,但如果我的过滤器跳过属性值仍然出现在JSON中。 最后,我有一个空属性的JSON文件是非常不可接受的:

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

有没有办法摆脱那些空洞的属性?

我还要补充一点,最后JSON非常庞大和复杂,出于性能原因,JSON应该由Jackson本身生成,而无需任何额外的工作。我试图找到尽可能简单的解决方案。

1 个答案:

答案 0 :(得分:2)

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

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