Rumah > Java > javaTutorial > teks badan

Bagaimana Menggunakan Nama Berbeza untuk Sifat JSON Semasa Pensirilan dan Penyahserikatan Jackson?

Linda Hamilton
Lepaskan: 2024-10-26 12:03:29
asal
238 orang telah melayarinya

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

Menggunakan Nama Berbeza untuk Sifat JSON Semasa Pensirilan dan Penyahseriiran di Jackson

Pensirilan dan penyahserikatan selalunya memerlukan nama medan yang sepadan antara kelas JSON dan Java. Walau bagaimanapun, mungkin terdapat keadaan di mana anda ingin menggunakan nama yang berbeza untuk medan yang sama semasa proses ini. Sebagai contoh, pertimbangkan kelas Koordinat berikut:

<code class="java">class Coordinates {
  int red;
}</code>
Salin selepas log masuk

Dalam senario ini, anda mungkin menginginkan format JSON berikut untuk penyahserikatan:

<code class="json">{
  "red": 12
}</code>
Salin selepas log masuk

Serentak, anda mungkin lebih suka format JSON yang berbeza untuk bersiri:

<code class="json">{
  "r": 12
}</code>
Salin selepas log masuk

Pada mulanya, cubaan menggunakan anotasi @JsonProperty pada kedua-dua kaedah getter dan setter mungkin menyebabkan pengecualian:

<code class="java">@JsonProperty("r")
public byte getRed() {
  return red;
}

@JsonProperty("red")
public void setRed(byte red) {
  this.red = red;
}</code>
Salin selepas log masuk

Walau bagaimanapun, isu ini boleh dibetulkan dengan memastikan bahawa nama kaedah adalah berbeza. Contohnya:

<code class="java">public byte getR() {
  return red;
}

public void setRed(byte red) {
  this.red = red;
}</code>
Salin selepas log masuk

Dengan memberikan nama kaedah yang berbeza, Jackson mentafsirkannya sebagai medan yang berasingan. Kod ujian berikut menunjukkan kejayaan penggunaan pendekatan ini:

<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>
Salin selepas log masuk

Output yang dijangkakan ialah:

Serialization: {"r":5}
Deserialization: 25
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Menggunakan Nama Berbeza untuk Sifat JSON Semasa Pensirilan dan Penyahserikatan Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!