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!