将 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中文网其他相关文章!