2013-07-03 43 views
5

我有JAXB/Jackson編組問題。我有這樣的註解傑克遜元帥XMLAttribute獲取「null」值

@XmlAttribute(name = "private") 
protected Boolean mPrivate; 

,我希望這個屬性是不存在的,如果mPrivate變量是null

如果輸出是XML,這可以正常工作。但是,如果我切換到JSON,使用傑克遜,輸出

xxxxxxx, "private":null, xxxxxxxx 

任何人有一個想法,爲什麼出現這種情況,如何解決?提前致謝。

+0

看到這個問題:http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is- null –

回答

5

Jackson與JAXB註釋兼容。因此,JAXB不支持XmlAttributes的默認值,因爲如果在序列化爲XML時值爲null,則默認行爲是將其忽略。

有幾個選項可以實現JSON。

  1. 您可以用標註 @JsonSerialize您的POJO(包括= JsonSerialize.Inclusion.NON_NULL)

  2. 您可以設置ObjectMapper的默認行爲從序列化中排除空值。你可以通過調用:

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在ObjectMapper實例上。

+0

我發現可以在類級別或字段/方法級別添加@JsonSerialize。如果應用於課堂級別,則仍然可以在字段/方法級別進行覆蓋。 – Blaine