Jackson JSON benutzerdefinierte Serialisierung für bestimmte Felder
Gibt es eine Möglichkeit, mit der Jackson JSON Processor zu tun benutzerdefiniertes Feld-Ebene Serialisierung? Zum Beispiel würde ich gerne die Klasse
public class Person {
public String name;
public int age;
public int favoriteNumber;
}
serialisiert, um die Folgen JSON:
{ "name": "Joe", "age": 25, "favoriteNumber": "123" }
Beachten Sie, dass Alter=25 codiert ist, als ein Anzahl während favoriteNumber=123 verschlüsselt als string. Out of the box Jackson marshalls int
auf eine Zahl. In diesem Fall möchte ich favoriteNumber werden codiert als string.
InformationsquelleAutor der Frage Steve Kuo | 2012-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie implementieren eine benutzerdefinierte serializer wie folgt:
Java behandeln soll, das autoboxing von
int
zuInteger
für Sie.InformationsquelleAutor der Antwort Kevin Bowersox
Jackson-databind (zumindest 2.1.3) bietet Besondere
ToStringSerializer
(com.fasterxml.jackson.databind.ser.std.ToStringSerializer
)Beispiel:
InformationsquelleAutor der Antwort werupokz
Hinzufügen
@JsonProperty
getter annotiert, das gibt einenString
für diefavoriteNumber
Feld:InformationsquelleAutor der Antwort João Silva
jackson-annotations bietet
@JsonFormat
die mit einer Menge von Anpassungen ohne die Notwendigkeit zu schreiben, die benutzerdefinierte serializer.Zum Beispiel, um eine
STRING
Form für ein Feld mit numerischen Typs ausgegeben wird, den numerischen Wert als stringFolge, dass die gewünschte Ausgabe
InformationsquelleAutor der Antwort Oleg Estekhin
mit Hilfe von @JsonView wir entscheiden können, Felder der model-Klassen zu serialisieren, die erfüllen die minimalen Kriterien ( wir haben die Kriterien definieren) wie können wir eine core-Klasse mit 10 Eigenschaften, aber nur 5 Eigenschaften werden serialisiert, die notwendigen für den Kunden nur
Definieren unsere Ansichten, indem Sie einfach erstellen Sie folgende Klasse:
Kommentierte model-Klasse mit Aussicht:
Wir haben jetzt zu schreiben, benutzerdefinierte json-Konverter, indem HttpMessageConverter Klasse von Frühling:
Ist dort jetzt sagen müssen, Frühjahr verwenden Sie diese benutzerdefinierten json konvertieren, indem Sie diese in dispatcher-servlet.xml
Das ist, wie Sie in der Lage zu entscheiden, welche Felder zu bekommen serialisieren.
InformationsquelleAutor der Antwort user3820510