Heim > Java > javaLernprogramm > 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
Freigeben: 2024-10-26 05:52:30
Original
565 Leute haben es durchsucht

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

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

Ausgabe:

Serialization: {"r":5}
Deserialization: 25
Nach dem Login kopieren

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!

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