Wie man verhindert, dass Nullwerte innerhalb einer Map und Nullfelder innerhalb einer Bean durch Jackson serialisiert werden
Ich habe Map<String,Foo> foosMap
dass ich serialisieren möchten durch Jackson . Nun möchte ich folgende zwei Einstellungen auf der Serialisierungs-Prozess:
- Die Karte haben können, haben viele null-Werte und null-Tasten und ich möchte keine null-Werte serialisiert werden.
- Für alle, die Foos sind immer serialisiert, ich will nicht zum serialisieren von null auf Objekte innerhalb von Foo.
Was ist der beste Weg, dies zu erreichen ? Ich bin mit jackson-core1.9 und jackson-mapper1.9 Gläser in meinem Projekt.
InformationsquelleAutor der Frage Inquisitive | 2012-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es ist vernünftig, das zu ändern und den ursprünglichen
Map
Datenstruktur serialisiert werden, um besser repräsentieren den tatsächlichen Wert wollte serialisiert werden, das ist wohl eine anständige Ansatz, das würde möglicherweise reduzieren die Menge der Jackson-Konfiguration notwendig. Zum Beispiel, entfernen Sie einfach dienull
- key-Einträge, wenn möglich, vor dem Aufruf von Jackson. Sagte, dass...Unterdrücken serialisieren
Map
Einträge mit null-Werten:Bevor Jackson 2.9
können Sie noch nutzen
WRITE_NULL_MAP_VALUES
aber beachten Sie, dass es verschobenSerializationFeature
:Da Jackson 2.9
Den
WRITE_NULL_MAP_VALUES
ist veraltet, können Sie die unten entspricht:Unterdrücken serialisieren Eigenschaften mit null-Werte, können Sie konfigurieren Sie die
ObjectMapper
direktoder nutzen Sie die@JsonInclude
Anmerkung:oder:
Zum behandeln von null -
Map
Schlüssel, einige benutzerdefinierte Serialisierung notwendig ist, wie ich am besten verstehen.Einen einfachen Zugang zu serialisieren
null
Tasten als leere Zeichenfolgen (einschließlich der vollständigen Beispiele der beiden zuvor genannten Konfigurationen):Unterdrücken serialisieren
Map
Einträge mitnull
Schlüssel, weitere benutzerdefinierte Serialisierung der Verarbeitung notwendig wäre.InformationsquelleAutor der Antwort Programmer Bruce
Jackson-Versionen < 2.0 verwenden Sie diese Anmerkung auf die Klasse, die serialisiert werden:
InformationsquelleAutor der Antwort AllBlackt
Antwort scheint zu sein, ein wenig alt, Was ich Tat, war die Verwendung dieser mapper-konvertieren
MAP
einem einfachen
Map
:Verwenden Sie es wie diese zum Beispiel:
InformationsquelleAutor der Antwort azerafati
meine Lösung, hoffe, Hilfe
benutzerdefinierte ObjectMapper und config, spring-xml(register Nachricht conveters)
}
InformationsquelleAutor der Antwort oneyoungping