首頁 >Java >java教程 >如何將 Jackson 配置為僅使用欄位進行全域序列化和反序列化?

如何將 Jackson 配置為僅使用欄位進行全域序列化和反序列化?

Barbara Streisand
Barbara Streisand原創
2024-11-24 05:56:10157瀏覽

How Can I Configure Jackson to Use Only Fields for Serialization and Deserialization Globally?

將Jackson 配置為僅使用欄位:全域方法

Jackson 的預設行為涉及使用屬性(getter/setter)和欄位進行序列化和反序列化。但是,您可能希望專門使用欄位作為序列化配置的來源。

單獨的類別註解

您可以將以下註解應用於每個單獨的類別來實現此目的:

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)

但是這個方法需要對每個類別進行重複的註解,可以是麻煩。

全域設定

要全域設定此行為,請修改各個 ObjectMappers,如下所示:

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

透過 Wrapper進行全域存取類別

為了全域存取已設定的映射器,請考慮實作一個包裝類別:

將映射器包裝在類別/函數中,以便根據需要全域公開它:

public class JsonMapperWrapper {
    private static final ObjectMapper mapper = <configure ObjectMapper as above>;

    public static ObjectMapper getMapper() {
        return mapper;
    }
}

使用這種方法,您可以透過JsonMapperWrapper.getMapper() 存取配置的映射器。

以上是如何將 Jackson 配置為僅使用欄位進行全域序列化和反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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