In Jackson ist es möglich, während der Serialisierung und Deserialisierung unterschiedliche Namen für eine Eigenschaft zu haben. Betrachten wir ein Beispiel mit der folgenden Koordinatenklasse:
<code class="java">class Coordinates { int red; }</code>
Wir wollen das folgende JSON-Format für die Deserialisierung:
<code class="json">{ "red": 12 }</code>
Für die Serialisierung benötigen wir jedoch das folgende Format:
<code class="json">{ "r": 12 }</code>
Lösung:
Die Lösung besteht darin, die Annotation @JsonProperty sowohl für die Getter- als auch für die Setter-Methode zu verwenden und sicherzustellen, dass sie unterschiedliche Namen haben:
<code class="java">class Coordinates { int red; @JsonProperty("r") public byte getRed() { return red; } @JsonProperty("red") public void setRed(byte red) { this.red = red; } }</code>
Beachten Sie, dass die Methodennamen unterschiedlich sein müssen. Jackson interpretiert sie als Verweise auf unterschiedliche Eigenschaften und nicht auf dieselbe Eigenschaft mit unterschiedlichen Namen.
Zusätzliche Hinweise:
Testcode:
<code class="java">Coordinates c = new Coordinates(); c.setRed((byte) 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.getR());</code>
Ausgabe:
Serialization: {"r":5} Deserialization: 25
Das obige ist der detaillierte Inhalt vonWie gehe ich mit unterschiedlichen Eigenschaftsnamen für die JSON-Serialisierung und -Deserialisierung in Jackson um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!