Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengkonfigurasi Jackson untuk Menggunakan Medan Sahaja untuk Pensirian dan Penyahserikatan?

Bagaimanakah Saya Boleh Mengkonfigurasi Jackson untuk Menggunakan Medan Sahaja untuk Pensirian dan Penyahserikatan?

DDD
Lepaskan: 2024-12-14 03:53:09
asal
308 orang telah melayarinya

How Can I Configure Jackson to Use Only Fields for Serialization and Deserialization?

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

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan