2013-07-03 12 views
5

Mam problem z rozrządzaniem JAXB/Jacksona. Mam taką adnotacjęJackson marszałek XMLAttribute dostaje "zerową" wartość

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

i spodziewam się, że ten atrybut jest nieobecny, jeśli zmienna mPrivate jest null.

Działa to dobrze, jeśli wyjście jest XML. Ale jeśli mogę przełączyć do formatu JSON, używając Jackson, wyjście jest

xxxxxxx, "private":null, xxxxxxxx 

Ktoś ma pomysł dlaczego tak się dzieje i jak to naprawić? Z góry dziękuję.

+0

Zobacz na to pytanie: http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is- null –

Odpowiedz

5

Jackson jest zgodny z adnotacjami JAXB. W związku z tym JAXB nie obsługuje wartości domyślnych dla XmlAttributes, ponieważ domyślnym zachowaniem jest pozostawienie ich poza wartością null przy serializacji do XML.

Istnieje kilka opcji osiągnięcia tego dla JSON.

  1. można opisywać swoje POJO z @JsonSerialize (include = JsonSerialize.Inclusion.NON_NULL)

  2. Można ustawić domyślne zachowanie ObjectMapper wykluczyć null wartości z serializacji. Można to zrobić, dzwoniąc pod numer:

    setSerializationInclusion (Inclusion.NON_NULL);

    ... w instancji ObjectMapper.

+0

Odkryłem, że @JsonSerialize można dodać na poziomie klasy lub na poziomie pola/metody. Jeśli zostanie zastosowany na poziomie klasy, możesz nadal przesłonić na poziomie pola/metody. – Blaine

Powiązane problemy