如何指定 jackson 仅使用字段 - 最好是全局的 [英] How to specify jackson to only use fields - preferably globally

查看:27
本文介绍了如何指定 jackson 仅使用字段 - 最好是全局的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

默认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 仅使用字段 - 最好是全局的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆