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

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

Susan Sarandon
Susan Sarandonasal
2024-12-07 14:02:17743semak imbas

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

Mengkonfigurasi ObjectMapper pada Musim Bunga: Hadkan Pensiri Medan

Untuk mengkonfigurasi ObjectMapper supaya bersiri hanya medan beranotasi dengan @JsonProperty, pertimbangkan pendekatan berikut:

1. Buat ObjectMapper Tersuai

public class CustomObjectMapper extends ObjectMapper {
    public CustomObjectMapper() {
        super();
        setVisibility(Visibility.NONE).enable(Visibility.NON_EMPTY);
    }
}

ObjectMapper tersuai ini melumpuhkan siri medan tidak beranotasi dan hanya termasuk medan yang nilainya bukan nol.

2. Daftarkan ObjectMapper Tersuai pada Musim Bunga

Dalam servlet.xml anda, daftarkan ObjectMapper tersuai seperti berikut:

<bean>

3. Kemas kini Konfigurasi Berasaskan Anotasi

Pastikan kelas @Configuration anda mendaftarkan CountingJacksonHttpMessageConverter tersuai:

@Configuration
public class JacksonConfiguration {

    @Bean
    public MappingJacksonHttpMessageConverter jsonConverter() {
        MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
        converter.setObjectMapper(jacksonObjectMapper());
        return converter;
    }
}

4. Pastikan Ketergantungan Versi Betul

Sahkan bahawa anda menggunakan versi Jackson yang serasi. Dalam kes ini, Jackson 2.x disyorkan untuk digunakan dengan Spring.

5. Sahkan Tidak Termasuk Anotasi Jackson Lalai

Pastikan anotasi Jackson lalai dikecualikan daripada pengesanan keterlihatan dengan mengatasi kaedah setVisibility dalam ObjectMapper tersuai anda.

Pertimbangan Tambahan:

  • Pendekatan ini hanya menyerikan medan dianotasi dengan @JsonProperty dan bukan yang ditandakan dengan anotasi lain (mis., @JsonSerialize).
  • Perhatikan bahawa mengecualikan medan daripada bersiri mungkin menjejaskan kefungsian komponen lain yang bergantung pada kelakuan lalai (cth., ketekunan, pengesahan) .
  • Untuk penyesuaian bersiri yang lebih lanjut, rujuk Jackson dokumentasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi ObjectMapper Spring untuk Mensiri Hanya Medan 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