当前位置: 首页 > 面试题库 >

如何指定jackon只使用字段-最好是全局使用

邓卓
2023-03-14
问题内容

默认的jackon行为似乎同时使用属性(getter和setter)和字段来序列化和反序列化为json。

我想将这些字段用作序列化配置的规范来源,因此根本不希望杰克逊查看属性。

我可以使用注解在单个类的基础上执行此操作:

 @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));

如果要全局设置它,我通常通过包装器类访问已配置的映射器。



 类似资料:
  • 问题内容: 默认的jackon行为似乎同时使用属性(getter和setter)和字段来序列化和反序列化为json。 我想将这些字段用作序列化配置的规范来源,因此根本不希望杰克逊查看属性。 我可以使用注解在单个类的基础上执行此操作: 但是我不想在每堂课上都讲这个… 是否可以全局配置?喜欢添加一些到对象映射器? 问题答案: 你可以这样配置各个ObjectMappers: 如果要全局设置它,我通常通过

  • 默认情况下,MapStruct映射源和目标的所有属性,如果它们具有相同的名称。中的元素可用于省略任何字段映射。但那不是我想要的。我想控制映射策略。我想指定如下内容: 现在,这个映射仅仅意味着将id和名称从源映射到目的地。除非在mappings注释中指定,否则不应映射其他字段。

  • 我正在使用ElasticSearch 7.3来查询一些文档, 我想在查询响应中只返回每个文档的特定字段, 我发现可以使用来实现这一点, 我可以从Kibana使用这个查询来实现这一点- 返回给我正确的数据- 但我无法使用ElasticSearch的节点客户端实现同样的功能- 有人能帮我找到正确的方法来实现我的用例吗? 引用- https://www.elastic.co/guide/en/elast

  • 问题内容: 如果名称和名称相同,默认情况下MapStruct将映射源和目标的所有属性。尽管我们可以在@Mapping中使用ignore属性来省略任何字段映射。但这不是我想要的。我想控制映射策略。我必须指定类似 现在此映射仅用于将ID和名称从源映射到目标。除非在映射注释中指定,否则不应映射其他字段。 问题答案: 您正在寻找的是#1392中 的功能请求。有一个待定的PR,因此可以在下一版本(1.3.0

  • 问题内容: 我在使用批量API(C#NEST v5.4)插入文档时遇到问题。我有一个文档数组,在数组中有我的ID。 我的代码是: 如何 使用描述符手动 插入 _id ? 提前致谢! 问题答案: 您可以使用类似的方法在上设置索引名称。鉴于以下POCO 例如,使用递增计数器设置ID 产生以下请求

  • 事实上中的变量比变量慢,这是众所周知的,并且已经在本网站的不同问题中讨论过了。然而,我仍然没有找到答案的一件事是,使用代码中不同函数内部使用的全局变量(如常量)的最佳和最快的方法是什么? 到目前为止,我能找到的最佳解决方案是定义一个函数,在这里我将全局变量分配给局部变量。 输出: 但这是一个丑陋的解决方案,而且比使用局部变量还要慢。在函数内部使用全局/常量变量等效的最著名的方法是什么,而不必将它们