Heim  >  Artikel  >  Java  >  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
Patricia ArquetteOriginal
2024-10-27 06:56:03730Durchsuche

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>

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!

Stellungnahme:
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