Pensirilan/Penyahserikatan JSON dengan Nama Harta Berbeza
Perpustakaan Jackson menawarkan kefleksibelan untuk menentukan nama yang berbeza bagi sesuatu harta semasa pensirilan dan penyahseririan. Pertimbangkan senario berikut:
Anda mempunyai kelas bernama "Koordinat" dengan medan "merah". Semasa penyahserikatan daripada JSON, anda mahu medan ini dipetakan kepada nama sifat "merah". Walau bagaimanapun, semasa penyirian, anda mahu nama sifat menjadi "r".
Penyelesaian
Untuk mencapai ini, anda boleh menggunakan anotasi @JsonProperty bersama-sama dengan kaedah yang berbeza nama untuk getter dan setter:
public class Coordinates { private int red; @JsonProperty("r") public int getRed() { return red; } @JsonProperty("red") public void setRed(int red) { this.red = red; } }
Dengan menggunakan nama kaedah yang berbeza untuk getter dan setter, Jackson mengiktirafnya sebagai sifat yang berbeza. Semasa penyahserikatan, ia memetakan sifat JSON "merah" kepada penetap dengan anotasi @JsonProperty("merah"). Semasa penyirian, ia menggunakan pengambil dengan anotasi @JsonProperty("r") untuk mendapatkan semula nilai dan mensirikannya sebagai sifat "r".
Contoh
Untuk menggambarkan tingkah laku ini, pertimbangkan kod ujian berikut:
Coordinates c = new Coordinates(); c.setRed(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.getRed());
Output:
Serialization: {"r":5} Deserialization: 25
Seperti yang anda lihat, nama sifat "merah" digunakan semasa penyahsiran, manakala nama sifat "r" digunakan semasa pensirilan.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Nama Harta Berbeza untuk Pensirian dan Penyahserikatan dengan Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!