Mengkonfigurasi Jackson untuk Menggunakan Medan Hanya untuk Pensirian dan Penyahserikatan
Tingkah laku lalai Jackson melibatkan penggunaan kedua-dua sifat (pengambil dan penetap) dan medan untuk penyirian dan penyahserikatan kepada JSON. Walau bagaimanapun, sesetengah pengguna mungkin memilih untuk mengutamakan medan sebagai satu-satunya sumber konfigurasi bersiri, tidak termasuk sifat.
Pendekatan Berasaskan Anotasi untuk Kelas Individu
Untuk menguatkuasakan tingkah laku ini pada asas setiap kelas, anotasi @JsonAutoDetect boleh digunakan:
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Anotasi ini mengecualikan sifat daripada pertimbangan Jackson, memastikan bahawa hanya medan digunakan untuk pengikatan data.
Konfigurasi Global untuk Semua Kelas
Daripada menggunakan anotasi pada setiap kelas secara manual, adalah mungkin untuk mengkonfigurasi tingkah laku ini secara global untuk semua kelas. Untuk mencapai matlamat ini, ObjectMapper perlu diubah suai seperti berikut:
ObjectMapper mapper = new ObjectMapper(); mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
Konfigurasi ini mengatasi tetapan keterlihatan lalai dan mengarahkan Jackson untuk menggunakan hanya medan untuk bersiri dan penyahserilan merentas semua kelas.
Mengakses Pemeta Dikonfigurasikan Secara Global
Untuk akses global kepada mengkonfigurasi ObjectMapper, kelas pembungkus boleh digunakan:
public class MyGlobalMapper { private static final ObjectMapper MAPPER = new ObjectMapper(); static { MAPPER.setVisibility(MAPPER.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); } public static ObjectMapper get() { return MAPPER; } }
Kelas pembungkus ini menyediakan kaedah statik untuk mendapatkan semula ObjectMapper yang dikonfigurasikan, membolehkan ia digunakan sepanjang aplikasi tanpa perlu mengkonfigurasi semula setiap kali.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengkonfigurasi Jackson untuk Menggunakan Medan Sahaja untuk Pensirian dan Penyahserikatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!