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
Lepaskan: 2024-12-04 06:16:11
asal
979 orang telah melayarinya

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

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

<bean>
Salin selepas log masuk

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

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

public class NumbersOfNewEvents implements StatusAttribute {
    public Integer newAccepts;
    public Integer openRequests;
    // ...
}
Salin selepas log masuk

Walau bagaimanapun, hanya atribut newAccepts dianotasi dengan @JsonProperty:

@JsonProperty
public Integer newAccepts;
Salin selepas log masuk

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!

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