问题描述
默认的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...
是否可以全局配置?就像在Object Mapper中添加一些一样?
Is it possible to configure this globally? Like add some to the Object Mapper?
推荐答案
您可以像这样配置各个ObjectMappers:
You can configure individual ObjectMappers like this:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(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只使用字段 - 最好全局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!