首页 >Java >java教程 >如何将 Jackson 配置为仅使用字段进行全局序列化和反序列化?

如何将 Jackson 配置为仅使用字段进行全局序列化和反序列化?

Barbara Streisand
Barbara Streisand原创
2024-11-24 05:56:10156浏览

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