Wie Sie zusätzliche Felder hinzufügen, um ein Objekt während der Jackson-json-Serialisierung?
Muss ich hinzufügen neue Eigenschaft für ein Objekt, wenn JSON serialisiert. Der Wert für die Eigenschaft berechnet auf Laufzeit und existiert nicht im Objekt. Auch das gleiche Objekt kann verwendet werden, für die Bildung der verschiedenen JSON mit verschiedenen set ot-Felder (Art, mit einer base-Klasse mit Unterklassen, aber ich will nicht zu erschaffen, die nur für JSON-generation).
Was ist der beste Weg, das zu tun, was nicht die Erstellung von benutzerdefinierte serializer-Klasse, die kümmern serialisieren ganzer Satz von Objekt-Felder? Oder vielleicht ist es möglich, Erben einige "basic" serializer, und nehmen Sie einfach den Ausgang, und fügen Sie das neue Feld, um es irgendwie?
Habe ich gelernt, über Mixins in Verbindung, und wie es aussieht, ist möglich, benennen Sie um, verstecken sich einige Felder, allerdings scheint es nicht möglich sein, fügen Sie ein extra ein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht nur hinzufügen, eine Methode, die in-Wert-Klasse? Beachten Sie, dass es nicht öffentlich, oder verwenden Sie die get-Namenskonvention; Sie konnte etwas tun, wie:
Sonst könnten Sie konvertieren POJO in JSON-Baum-Wert:
und dann ändern Sie es durch hinzufügen von Eigenschaften, etc.
Einer option ist, um ein Feld für diese Eigenschaft, und legen Sie es auf das Objekt, vor dem schreiben zu JSON. Eine zweite option, wenn die Eigenschaft berechnet werden kann, von anderen Objekt-Eigenschaften, die Sie konnte, fügen Sie einfach einen getter für Sie, zum Beispiel:
Und obwohl es kein entsprechendes Feld Jackson wird automatisch, rufen Sie diese getter beim schreiben der JSON-und es wird angezeigt, wie
fullName
im JSON-Ausgabe. Wenn das nicht funktioniert eine Dritte option ist, um konvertieren Sie das Objekt in eine Karte und dann Bearbeiten Sie es wie Sie brauchen:Bist du Frage nicht erwähnt unmarshalling aber wenn Sie benötigen, zu tun, wie gut ist dann die erste option würde funktionieren, aber der zweite zwei würde müssen einige Optimierungen.
Und als für das schreiben der verschiedenen Felder des gleichen Objekts, es klingt wie ein job für
@JsonView