2014-12-02 48 views
0

我使用傑克遜2.4.3和ObjectMapper,它被配置爲排除空屬性(JsonInclude.Include.NON_EMPTY),但我也在序列化過程中使用自定義PropertyFilter,並排除一些屬性(不寫)通過這個過濾器。 排除先前空性質的工作正常,但如果屬性值是通過我的過濾器跳過仍然出現在JSON。 最後我有空的性質,這是不可接受的高JSON文件:傑克遜序列化 - 過濾後襬脫空屬性

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

有什麼辦法來擺脫那些空的屬性?

我還要補充一點,最後JSON是相當大的,複雜的和性能原因,妥善JSON應該由傑克遜本身沒有任何額外的工作來生產。我試圖找到儘可能簡單的解決方案。

回答

2

這裏的問題是,過濾功能輸入Java對象,而不是構建JSON;這意味着雖然大部分對象的內容可以被過濾(和結果JSON對象爲空),對象本身不爲空。

有一些正在進行的工作(要完成2.5),可能允許更好的處理,並可能處理至少爲java.util.Map s的過濾的嵌套性質。但現在,沒有進一步修剪內容的自動化解決方案。