Rumah >Java >javaTutorial >Bagaimana untuk Mengkonfigurasi ObjectMapper pada Spring untuk Pensirilan dan Penyahserikatan JSON Tersuai?

Bagaimana untuk Mengkonfigurasi ObjectMapper pada Spring untuk Pensirilan dan Penyahserikatan JSON Tersuai?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 07:15:16865semak imbas

How to Configure ObjectMapper in Spring for Custom JSON Serialization and Deserialization?

Mengkonfigurasi ObjectMapper pada Musim Bunga

Pada Musim Bunga, ObjectMapper boleh dikonfigurasikan untuk memenuhi keperluan khusus. Ini amat berguna apabila anda ingin mengawal kelakuan bersiri dan penyahsirilan data JSON anda.

Satu senario biasa ialah mengecualikan sifat tertentu daripada bersiri melainkan ia diberi anotasi secara eksplisit. Untuk mencapai matlamat ini, kami mengikuti langkah berikut:

  1. Buat ObjectMapper tersuai:

    public class CompanyObjectMapper extends ObjectMapper {
        public CompanyObjectMapper() {
            super();
            setVisibilityChecker(getSerializationConfig()
                    .getDefaultVisibilityChecker()
                    .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                    .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                    .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
        }
    }
  2. Sertakan ObjectMapper tersuai dalam Spring's konfigurasi:

    <bean>
  3. Konfigurasikan Spring MVC untuk menggunakan ObjectMapper tersuai:

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

Walau bagaimanapun, pendekatan ini mungkin tidak berfungsi seperti yang diharapkan jika anda menggunakan Spring versi 3.0.5 dan Jackson 1.8.0. Untuk menyelesaikan isu ini, adalah disyorkan untuk menggunakan konfigurasi berasaskan anotasi berikut dengan Spring Boot dan Jackson 2.4.6 atau lebih baharu:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

        return mapper;
    }
}

Konfigurasi ini akan membolehkan ObjectMapper hanya mensiri sifat yang mempunyai @ Anotasi JsonProperty, memenuhi keperluan yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi ObjectMapper pada Spring untuk Pensirilan dan Penyahserikatan JSON Tersuai?. 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