Heim > Java > javaLernprogramm > Hauptteil

Wie verwende ich unterschiedliche Namen für JSON-Eigenschaften während der Jackson-Serialisierung und -Deserialisierung?

Linda Hamilton
Freigeben: 2024-10-26 12:03:29
Original
238 Leute haben es durchsucht

How to Use Different Names for JSON Properties During Jackson Serialization and Deserialization?

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

In diesem Szenario möchten Sie möglicherweise das folgende JSON-Format für die Deserialisierung:

<code class="json">{
  "red": 12
}</code>
Nach dem Login kopieren

Gleichzeitig bevorzugen Sie möglicherweise ein anderes JSON-Format für die Serialisierung:

<code class="json">{
  "r": 12
}</code>
Nach dem Login kopieren

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

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

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

Die erwartete Ausgabe ist:

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!