当前位置: 首页 > 知识库问答 >
问题:

无法升级到杰克逊2.1.4,球衣忽略注解

闻人伟
2023-03-14

简短版:

我使用的是泽西岛 1.17 和杰克逊 2.1.4,但泽西岛忽略了我使用的每一个杰克逊注释。为什么!?有没有人遇到过同样的问题?

长版本:

我有一个RESTful Web服务,它使用Jersey 1.17和Jackson 1.9.2,我使用@JsonManagedReference和@JsonBackReference注释来解决双向关系的问题,并且一切正常。

前几天,我看到了包含@JsonIdentityInfo注释的2.1.4版本的Jackson,它似乎是我的问题的一个很好的解决方案,所以我将jar文件更改为Jackson 2.1.4。然而,有希望的@JsonIDentityInfos注释不起作用,Jersey完全忽略了它,经过一点调试和更改代码后,我发现,甚至之前的@JsonManagedReference和@JsonBackReference注释也被Jersey忽略了。因此,Jersey似乎完全忽略了Jackson 2.1.4注释。为什么?有人遇到过同样的问题吗?

共有2个答案

丁文轩
2023-03-14

在我的案例中,jackson注释被忽略了,因为proGuard。

卫飞鹏
2023-03-14

正如http://wiki.fasterxml.com/JacksonAnnotations:所说的

重要提示:Jackson 1.x和2.x注释位于不同的Java和Maven包中:请参阅Jackson 2.0以了解完整的解释:

    < li>1.x注释在Java包< code > org . code Haus . jackson . annotate 中,在Jackson核心jar中 < li>2.x注释在Java包< code > com . faster XML . Jackson . annotation 中,在“Jackson-databind”jar中。

这可能是一个“进口相关”问题。另一个原因(如@HiJon89所述)是使用正确的JacksonJsonProvider版本。对于2.x版,它会在插入“jackson-jaxrs-json-provider”和“jersey core”组合时自动注册。

我目前对jackson 2.1.4的工作更新(来自1.9.2 jersey所需的依赖项)是:

> < li >删除jersey-json相关性 < li>

添加jersey-core和jackson-jaxrs-json-provider

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-core</artifactId>
    <version>${jersey.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>${jackson-jaxrs-json-provider.version}</version>
</dependency>

后一个jar有一个文件“META-INF/services/javax.ws.rs.ext.MessageBodyWriter”,告诉jersey哪个类充当提供者。

因此,我没有其他建议,只能再次检查您的类路径中不再有旧的jar。

 类似资料:
  • 问题内容: 我有以下json文件: 但是java模型如下: Jackson解析时会引发异常,因为“ externalId”字段没有getter或setter方法。有没有可以用来忽略json字段的装饰器? 问题答案: 您可以使用注释;如果这只是您要跳过的一个值,则类似于: 或忽略任何无法使用的东西: 还有其他方法可以做到这一点,其余的请查看FasterXML Jackson wiki 。

  • 我在一个jaxb注释类中有一个方法,当且仅当它使用jersey 1.16编组到JSON时,我想编组一个值,它在下面使用jackson 1.9。我希望使用jaxb的@XmlTransient和jackson的@JsonProperty以这样的方式完成这项工作: …但马歇尔似乎一点也不觉得。没有遇到错误。

  • 我环顾四周,不认为这是其中任何一个的复制品: 在《野蝇》中使用杰克逊注释 杰克逊注释被忽略 野蝇和杰克逊@JsonIgnore注释 使用野蝇10并部署具有以下类的战争: 如果构造函数未被注释,我会在部署时看到该构造函数中引发的异常,但在向 REST 服务发出请求时,我看不到 方法中的异常。 我在实体上有一个注释,它不起作用,我使用的注释也不起作用 该类如下所示(包括导入,以验证我使用的是 com.

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: 现在,首先,我已经在该站点上阅读了其他答案,以及有关杰克逊序列化的其他答案,但它们都提供了忽略字段的方法。但是,在Java中,不能为。 我正在尝试将Java对象转换为,但忽略任何字段。这适用于字符串,但最终会采用if 值(如果未初始化),因为not 不会被忽略。 谁能对此有所启发? 编辑:为澄清起见,我尝试使用该类作为数据类型,但导致转换为字符串以引发JsonProcessingExc

  • 问题内容: 我使用杰克逊将JSON转换为Object类。 JSON: 对象类别: 码: 我的代码抛出这样的异常: 而且我不想在Test类上添加一个道具,我只是想让jackson转换Test中也存在的存在值。 问题答案: Jackson提供了几种不同的机制来配置“额外” JSON元素的处理。以下是将to 配置为not 的示例。 有关其他方法,请参见http://wiki.fasterxml.com/