gpt4 book ai didi

json - 无法升级到 Jackson 2.1.4,Jersey 忽略注释

转载 作者:行者123 更新时间:2023-12-01 02:27:09 25 4
gpt4 key购买 nike

短版:

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

长版:

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

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

最佳答案

http://wiki.fasterxml.com/JacksonAnnotations 中所述:

Important note: Jackson 1.x and 2.x annotations live in different Java and Maven packages: see Jackson 2.0 for full explanation:

  • 1.x annotations are in Java package org.codehaus.jackson.annotate, in Jackson core jar
  • 2.x annotations are in Java package com.fasterxml.jackson.annotation, in "jackson-databind" jar.


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

我目前对 jackson 2.1.4 的更新(来自 1.9.2 jersey required 依赖项)是:
  • 删除 jersey-json 依赖项
  • 添加 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 了classpath中。

    关于json - 无法升级到 Jackson 2.1.4,Jersey 忽略注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436268/

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