问题描述
默认jackon 行为似乎同时使用属性(getter 和setter)和字段来序列化和反序列化为json.
Default jackon behaviour seems to use both properties (getters and setters) and fields to serialize and deserialize to json.
我想使用这些字段作为序列化配置的规范来源,因此根本不希望 jackson 查看属性.
I would like to use the fields as the canonical source of serialization config and thus don't want jackson to look at properties at all.
我可以使用注释在单个类的基础上执行此操作:
I can do this on an individual class basis with the annotation:
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
但我不想把它放在每门课上......
But I don't want to have to put this on every single class...
是否可以全局配置?喜欢在对象映射器中添加一些吗?
Is it possible to configure this globally? Like add some to the Object Mapper?
推荐答案
您可以像这样配置单个 ObjectMapper:
You can configure individual ObjectMappers like this:
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));
如果要全局设置,我通常通过包装类访问配置的映射器.
If you want it set globally, I usually access a configured mapper through a wrapper class.
这篇关于如何指定 jackson 仅使用字段 - 最好是全局的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!