Mengkonfigurasi Jackson untuk Menggunakan Medan Sahaja: Pendekatan Global
Tingkah laku lalai Jackson melibatkan penggunaan kedua-dua sifat (pengambil/penetap) dan medan untuk bersiri dan penyahserialisasian. Walau bagaimanapun, anda mungkin ingin menggunakan medan secara eksklusif sebagai sumber konfigurasi bersiri.
Anotasi Kelas Individu
Anda boleh menggunakan anotasi berikut pada setiap kelas individu untuk mencapai ini :
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Walau bagaimanapun, kaedah ini memerlukan anotasi berulang pada setiap kelas, yang boleh menyusahkan.
Konfigurasi Global
Untuk mengkonfigurasi tingkah laku ini secara global, ubah suai ObjectMappers individu 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));
Akses Global melalui Wrapper Kelas
Untuk akses global kepada pemeta yang dikonfigurasikan, pertimbangkan untuk melaksanakan kelas pembalut:
Balut pemeta dalam kelas/fungsi untuk mendedahkannya secara global seperti yang diperlukan:
public class JsonMapperWrapper { private static final ObjectMapper mapper = <configure ObjectMapper as above>; public static ObjectMapper getMapper() { return mapper; } }
Dengan pendekatan ini, anda boleh mengakses pemeta yang dikonfigurasikan melalui JsonMapperWrapper.getMapper ().
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengkonfigurasi Jackson untuk Menggunakan Medan Sahaja untuk Pensirilan dan Penyahserikatan Secara Global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!