Rumah >Java >javaTutorial >Bagaimana untuk Mengkonfigurasi ObjectMapper Spring untuk Mensiri Hanya Elemen Beranotasi @JsonProperty?

Bagaimana untuk Mengkonfigurasi ObjectMapper Spring untuk Mensiri Hanya Elemen Beranotasi @JsonProperty?

DDD
DDDasal
2024-12-02 15:19:11606semak imbas

How to Configure Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Elements?

Cara Mengkonfigurasi ObjectMapper pada Musim Bunga

Masalah:

Anda mahu mengkonfigurasi ObjectMapper dalam Spring untuk menyirikan hanya elemen yang diberi anotasi dengan @JsonProperty. Walau bagaimanapun, walaupun mengikut arahan yang disyorkan, kelas NumbersOfNewEvents masih mengandungi semua atribut apabila bersiri.

Penjelasan:

Dalam CompanyObjectMapper tersuai, anda telah menetapkan penyemak keterlihatan untuk menyembunyikan semua medan dan getter/setter secara lalai. Ini menghalang ObjectMapper daripada mengakses dan menyerikan medan newAccepts dan openRequests.

Penyelesaian:

Untuk mencapai hasil yang diinginkan, anda boleh menggunakan pendekatan yang lebih disasarkan untuk mengkonfigurasi keterlihatan penyemak. Berikut ialah contoh:

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        SerializationConfig config = getSerializationConfig();
        config.withView(Some.class)   // Specify which view to use
             .withVisibility(JsonAutoDetect.Visibility.NONE)
             .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    }
}

Konfigurasi ini akan membenarkan sifat dengan anotasi @JsonProperty disiri, sambil mengekalkan medan lain tersembunyi.

Konfigurasi But Musim Bunga:

Jika anda menggunakan Spring Boot dan Jackson 2.4.6 atau lebih tinggi, anda boleh menggunakan yang berikut konfigurasi:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  // Enable default typing for polymorphic types
        mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);      // Allow serialization of fields
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);  // Enable default view inclusion
        return mapper;
    }
}

Konfigurasi ini mendayakan penaipan lalai untuk jenis polimorfik, membenarkan penyirian semua medan dan mendayakan pemasukan paparan lalai.

Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi ObjectMapper Spring untuk Mensiri Hanya Elemen Beranotasi @JsonProperty?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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