Heim  >  Artikel  >  Java  >  Wie erreicht man mit Jackson unterschiedliche Eigenschaftsnamen für Serialisierung und Deserialisierung?

Wie erreicht man mit Jackson unterschiedliche Eigenschaftsnamen für Serialisierung und Deserialisierung?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 05:52:30470Durchsuche

How to Achieve Different Property Names for Serialization and Deserialization with Jackson?

JSON-Serialisierung/Deserialisierung mit unterschiedlichen Eigenschaftsnamen

Die Jackson-Bibliothek bietet die Flexibilität, während der Serialisierung und Deserialisierung unterschiedliche Namen für eine Eigenschaft anzugeben. Stellen Sie sich das folgende Szenario vor:

Sie haben eine Klasse namens „Koordinaten“ mit einem Feld „rot“. Bei der Deserialisierung von JSON soll dieses Feld dem Eigenschaftsnamen „red“ zugeordnet werden. Während der Serialisierung soll der Eigenschaftsname jedoch „r“ sein.

Lösung

Um dies zu erreichen, können Sie die Annotation @JsonProperty zusammen mit einer anderen Methode verwenden Namen für Getter und Setter:

public class Coordinates {
    private int red;

    @JsonProperty("r")
    public int getRed() {
        return red;
    }

    @JsonProperty("red")
    public void setRed(int red) {
        this.red = red;
    }
}

Durch die Verwendung unterschiedlicher Methodennamen für Getter und Setter erkennt Jackson diese als unterschiedliche Eigenschaften. Während der Deserialisierung wird die JSON-Eigenschaft „red“ mit der Annotation @JsonProperty(„red“) dem Setter zugeordnet. Während der Serialisierung wird der Getter mit der Annotation @JsonProperty("r") verwendet, um den Wert abzurufen und als Eigenschaft „r“ zu serialisieren.

Beispiel

Um dieses Verhalten zu veranschaulichen, betrachten Sie den folgenden Testcode:

Coordinates c = new Coordinates();
c.setRed(5);

ObjectMapper mapper = new ObjectMapper();
System.out.println("Serialization: " + mapper.writeValueAsString(c));

Coordinates r = mapper.readValue("{\"red\":25}", Coordinates.class);
System.out.println("Deserialization: " + r.getRed());

Ausgabe:

Serialization: {"r":5}
Deserialization: 25

Wie Sie sehen können, wird der Eigenschaftsname „red“ verwendet während der Deserialisierung, während der Eigenschaftsname „r“ während der Serialisierung verwendet wird.

Das obige ist der detaillierte Inhalt vonWie erreicht man mit Jackson unterschiedliche Eigenschaftsnamen für Serialisierung und Deserialisierung?. 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