Rumah >Java >javaTutorial >Bagaimana untuk Menyesuaikan ObjectMapper Spring untuk Mensiri Hanya @JsonProperty Annotated Properties?

Bagaimana untuk Menyesuaikan ObjectMapper Spring untuk Mensiri Hanya @JsonProperty Annotated Properties?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 06:16:11986semak imbas

How to Customize Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Properties?

Mengkonfigurasi ObjectMapper dalam Spring

Dalam aplikasi Spring, ObjectMapper ialah komponen penting untuk mensiri dan menyahsiri data JSON. Anda boleh menyesuaikan ObjectMapper untuk memenuhi keperluan khusus, seperti hanya mensiri sifat yang dianotasi dengan @JsonProperty.

Untuk mencapai ini, langkah pertama ialah mencipta kelas ObjectMapper tersuai yang melanjutkan kelas ObjectMapper asas yang disediakan oleh Jackson. Gantikan penyemak keterlihatan lalai untuk mengecualikan sifat tidak beranotasi:

public class MyCustomObjectMapper extends ObjectMapper {
    public MyCustomObjectMapper() {
        super();
        setVisibilityChecker(getSerializationConfig()
                .getDefaultVisibilityChecker()
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
    }
}

Seterusnya, daftarkan kacang ObjectMapper tersuai dalam fail konfigurasi Spring (servlet.xml):

<bean>

Akhir sekali, konfigurasikan rangka kerja MVC dipacu anotasi 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="customObjectMapper" />
            </bean>
        </list>
    </property>
</bean>

Dalam kod contoh yang disediakan, kelas NumbersOfNewEvents mengandungi dua atribut awam:

public class NumbersOfNewEvents implements StatusAttribute {
    public Integer newAccepts;
    public Integer openRequests;
    // ...
}

Walau bagaimanapun, hanya atribut newAccepts dianotasi dengan @JsonProperty:

@JsonProperty
public Integer newAccepts;

Dengan mengkonfigurasi ObjectMapper seperti yang diterangkan di atas , hanya atribut newAccepts harus disiri apabila objek NumbersOfNewEvents ditukar kepada JSON. Ini kerana ObjectMapper tersuai akan mengecualikan sifat tidak beranotasi semasa penyirian.

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan ObjectMapper Spring untuk Mensiri Hanya @JsonProperty Annotated Properties?. 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