Verwendung unterschiedlicher Namen für JSON-Eigenschaften während der Serialisierung und Deserialisierung in Jackson
Serialisierung und Deserialisierung erfordern häufig übereinstimmende Feldnamen zwischen JSON- und Java-Klassen. Es kann jedoch vorkommen, dass Sie während dieser Prozesse unterschiedliche Namen für dasselbe Feld verwenden möchten. Betrachten Sie beispielsweise die folgende Koordinatenklasse:
<code class="java">class Coordinates { int red; }</code>
In diesem Szenario möchten Sie möglicherweise das folgende JSON-Format für die Deserialisierung:
<code class="json">{ "red": 12 }</code>
Gleichzeitig bevorzugen Sie möglicherweise ein anderes JSON-Format für die Serialisierung:
<code class="json">{ "r": 12 }</code>
Zunächst kann der Versuch, @JsonProperty-Annotationen sowohl für Getter- als auch für Setter-Methoden zu verwenden, zu einer Ausnahme führen:
<code class="java">@JsonProperty("r") public byte getRed() { return red; } @JsonProperty("red") public void setRed(byte red) { this.red = red; }</code>
Dieses Problem kann jedoch behoben werden, indem sichergestellt wird dass die Methodennamen unterschiedlich sind. Zum Beispiel:
<code class="java">public byte getR() { return red; } public void setRed(byte red) { this.red = red; }</code>
Durch die Bereitstellung verschiedener Methodennamen interpretiert Jackson diese als separate Felder. Der folgende Testcode demonstriert die erfolgreiche Verwendung dieses Ansatzes:
<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>
Die erwartete Ausgabe ist:
Serialization: {"r":5} Deserialization: 25
Das obige ist der detaillierte Inhalt vonWie verwende ich unterschiedliche Namen für JSON-Eigenschaften während der Jackson-Serialisierung und -Deserialisierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!