首頁 >Java >java教程 >如何配置Spring的ObjectMapper只序列化@JsonProperty註解的元素?

如何配置Spring的ObjectMapper只序列化@JsonProperty註解的元素?

DDD
DDD原創
2024-12-02 15:19:11606瀏覽

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

如何在Spring 中設定ObjectMapper

問題:

問題:

問題:

你想在Spring 中設定ObjectMapper Spring僅序列化用@JsonProperty註解的元素。但是,儘管遵循建議的說明,NumbersOfNewEvents 類別在序列化時仍然包含所有屬性。

說明:

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        SerializationConfig config = getSerializationConfig();
        config.withView(Some.class)   // Specify which view to use
             .withVisibility(JsonAutoDetect.Visibility.NONE)
             .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    }
}
在自訂 CompanyObjectMapper 中,您已設定可見性檢查器預設隱藏所有欄位和 getter/setter。這會阻止 ObjectMapper 存取和序列化 newAccepts 和 openRequests 欄位。

解決方案:

要達到期望的結果,可以使用更有針對性的方法來配置可見性檢查員。以下是一個範例:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  // Enable default typing for polymorphic types
        mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);      // Allow serialization of fields
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);  // Enable default view inclusion
        return mapper;
    }
}
此配置將允許序列化帶有 @JsonProperty 註解的屬性,同時隱藏其他欄位。

Spring Boot 配置: 如果您使用Spring Boot 和Jackson 2.4.6 或更高版本,您可以使用以下命令配置: 此配置啟用多態類型的預設類型,允許所有欄位的序列化,並啟用預設視圖包含。

以上是如何配置Spring的ObjectMapper只序列化@JsonProperty註解的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn