Anpassen von JSON-Eigenschaftsnamen während der Serialisierung und Deserialisierung
Bei der objektorientierten Programmierung ist es oft wünschenswert, private Klassenfelder durch Methoden-Getter zu manipulieren und Setter, während die Daten während der Serialisierung und Deserialisierung in einem konsistenten Format dargestellt werden. Der annotationsbasierte Ansatz der Jackson-Bibliothek ermöglicht es uns, dies zu erreichen, indem wir einer einzelnen Eigenschaft unterschiedliche Namen zuweisen.
Stellen Sie sich eine „Coordinates“-Klasse mit einem ganzzahligen Feld namens „red“ vor. Wir möchten JSON-Objekte mit dem Eigenschaftsnamen „r“ serialisieren und gleichzeitig mit dem Namen „red“ deserialisieren.
Um dies zu implementieren, können wir die Annotation @JsonProperty sowohl für die Getter- als auch für die Setter-Methode mit unterschiedlichen Werten verwenden. Dieser Ansatz führte jedoch zu einer Ausnahme:
<code class="json">org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "red"</code>
Das Problem entsteht, weil Jackson sowohl der Getter- als auch der Setter-Methode denselben Feldnamen zuweist. Um dieses Problem zu lösen, müssen wir unterschiedliche Methodennamen für Getter und Setter verwenden:
<code class="java">public class Coordinates { byte red; @JsonProperty("r") public byte getR() { return red; } @JsonProperty("red") public void setRed(byte red) { this.red = red; } }</code>
Dieser Ansatz serialisiert das Objekt erfolgreich mit dem Eigenschaftsnamen „r“ und deserialisiert es mit dem Namen „red“.
<code class="json">Serialization: {"r":5} Deserialization: 25</code>
Das obige ist der detaillierte Inhalt vonWie kann ich mit Jackson JSON-Eigenschaftsnamen für unterschiedliche Serialisierungen und Deserialisierungen anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!