2013-07-03 9 views
5

Ich habe ein Problem mit JAXB/Jackson Marshalling. Ich habe so eine AnmerkungJackson Marshal XMLAttribute bekommt "null" -Wert

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

und ich erwarte, dass dieses Attribut nicht vorhanden sein, wenn die mPrivate Variable null ist.

Dies funktioniert gut, wenn die Ausgabe XML ist. Aber wenn ich zu JSON wechseln, mit Jackson, ist der Ausgang

xxxxxxx, "private":null, xxxxxxxx 

Wer hat eine Idee, warum dies geschieht und wie man es beheben? Danke im Voraus.

+0

Sehen Sie diese Frage: http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is- null –

Antwort

5

Jackson ist kompatibel mit den JAXB-Annotationen. Daher unterstützt JAXB keine Standardwerte für XmlAttributes, da das Standardverhalten darin besteht, sie bei einem Wert von null bei der Serialisierung nach XML auszulassen.

Es gibt einige Optionen, um dies für JSON zu erreichen.

  1. Sie können Ihre POJO mit @JsonSerialize mit Anmerkungen versehen (include = JsonSerialize.Inclusion.NON_NULL)

  2. Sie das Standardverhalten des ObjectMapper einstellen zu null-Werte von Serialisierung auszuschließen. Sie tun dies, indem Sie Folgendes aufrufen:

    setSerializationInclusion (Inclusion.NON_NULL);

    ... in der ObjectMapper-Instanz.

+0

Ich entdeckte, dass @JsonSerialize auf Klassen- oder Feld-/Methodenebene hinzugefügt werden kann. Wenn Sie auf Klassenebene angewendet werden, können Sie immer noch auf der Feld-/Methodenebene übersteuern. – Blaine