首頁 > Java > java教程 > 如何自訂Spring的ObjectMapper以僅序列化@JsonProperty註解的屬性?

如何自訂Spring的ObjectMapper以僅序列化@JsonProperty註解的屬性?

Mary-Kate Olsen
發布: 2024-12-04 06:16:11
原創
1066 人瀏覽過

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

在 Spring 中設定 ObjectMapper

在 Spring 應用程式中,ObjectMapper 是序列化和反序列化 JSON 資料的關鍵元件。您可以自訂 ObjectMapper 以滿足特定要求,例如僅序列化使用 @JsonProperty 註解的屬性。

要實現此目的,第一步是建立一個自訂 ObjectMapper 類,該類別擴展 Jackson 提供的基本 ObjectMapper 類別。覆寫預設的可見性檢查器以排除未註解的屬性:

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));
    }
}
登入後複製

接下來,在Spring 設定檔(servlet.xml)中註冊自訂ObjectMapper bean:

<bean>
登入後複製

最後,配置註解驅動的MVC 框架以使用自訂ObjectMapper:

<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>
登入後複製

在提供的範例程式碼中,NumbersOfNewEvents 類別包含兩個公用屬性:

public class NumbersOfNewEvents implements StatusAttribute {
    public Integer newAccepts;
    public Integer openRequests;
    // ...
}
登入後複製

但是,只有newAccepts 屬性使用@JsonProperty 屬性:

@JsonProperty
public Integer newAccepts;
登入後複製

透過如上所述配置ObjectMapper,只有newAccepts 屬性當NumbersOfNewEvents 物件轉換為 JSON 時應進行序列化。這是因為自訂 ObjectMapper 在序列化過程中會排除未註解的屬性。

以上是如何自訂Spring的ObjectMapper以僅序列化@JsonProperty註解的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板