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

查看:843
本文介绍了如何指定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...

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

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