gpt4 book ai didi

java - 将 Jackson 2.x 配置为不使用 @XmlElement 字段注释进行 JSON 字段命名

转载 作者:行者123 更新时间:2023-11-30 11:12:39 25 4
gpt4 key购买 nike

我看过这个question并使用

使其工作
.configure(DeserializationConfig.Feature.USE_ANNOTATIONS, true)
.configure(SerializationConfig.Feature.USE_ANNOTATIONS, true);

在我的自定义 ObjectMapper

Json 序列化适用于上述配置。

但问题是我现在想使用 Jackson 2.x,因为更好的反序列化控制,我找不到任何好的文档来说明如何配置 jackson 2.x 以忽略 JAXB 注释

如有任何帮助,我们将不胜感激。

更新:我试过 objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false); 但这似乎对 jackson 获取 JAXB 注释没有影响。

第二次更新:发布下面的解决方案作为答案。

最佳答案

我找到的解决方案是创建我的 ObjectMapper,然后在 main 方法中使用 jersey 注册它(我使用带有 jersey 的 SpringBoot 作为完整的解决方案)。

如果我在其他类中创建了 ObjectMapper 并尝试在 main 中注册它,则既不会调用该类的构造函数,也不会调用覆盖的 getContext() 方法。因此,我在 main 方法中创建了 ObjectMapper 并使用 jersey 注册了提供者。

片段:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(MapperFeature.USE_ANNOTATIONS);

// create JsonProvider to provide custom ObjectMapper
JacksonJsonProvider provider = new JacksonJsonProvider();
provider.setMapper(mapper);

register(provider);

Maven 依赖项,因为注释和 JacksonJsonProvider 在不同的工件中可用:

<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>

希望对您有所帮助。

关于java - 将 Jackson 2.x 配置为不使用 @XmlElement 字段注释进行 JSON 字段命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26767158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com