Heim > Java > javaLernprogramm > Wie kann ich mit Jackson JSON-Eigenschaftsnamen für unterschiedliche Serialisierungen und Deserialisierungen anpassen?

Wie kann ich mit Jackson JSON-Eigenschaftsnamen für unterschiedliche Serialisierungen und Deserialisierungen anpassen?

Patricia Arquette
Freigeben: 2024-10-27 06:56:03
Original
836 Leute haben es durchsucht

How to Customize JSON Property Names for Different Serialization and Deserialization Using Jackson?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage