Di Jackson, nama mungkin berbeza untuk sesuatu harta semasa pensirilan dan penyahseririan. Mari kita pertimbangkan contoh dengan kelas Koordinat berikut:
<code class="java">class Coordinates { int red; }</code>
Kami mahukan format JSON berikut untuk penyahsirilan:
<code class="json">{ "red": 12 }</code>
Walau bagaimanapun, untuk bersiri, kami memerlukan format berikut:
<code class="json">{ "r": 12 }</code>
Penyelesaian:
Penyelesaian terletak pada penggunaan anotasi @JsonProperty pada kedua-dua kaedah getter dan setter, memastikan ia mempunyai nama yang berbeza:
<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>
Perhatikan bahawa nama kaedah mestilah berbeza. Jackson mentafsirkannya sebagai rujukan kepada sifat yang berbeza, bukannya sifat yang sama dengan nama yang berbeza.
Nota Tambahan:
Kod Ujian:
<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>
Output:
Serialization: {"r":5} Deserialization: 25
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nama Harta Berbeza untuk Pensirilan JSON dan Penyahserialisasian di Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!