Jersey 2.0-m2 中的 JSON 支持

标签 json maven jersey jackson grizzly

(我在 Stackoverflow 上的第一篇文章,maven 和 Jersey 的新手;-)

尝试开发一个独立的 jersey-JSON-应用程序,我从最新的 mvn 原型(prototype)开始

    mvn archetype:generate org.glassfish.jersey.archetypes:jersey-quickstart-grizzly2

默认情况下,没有 JSON 支持。我设法在 Eclipse 中导入并运行它,并看到“明白了!”我的浏览器中的页面。 JSON 支持可以(?)通过取消 pom.xml 和 Main.java 中的行注释来激活。因此,在使用 Maven 生成的新项目中,我在 pom.xml 中激活了以下依赖项:

     <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>${jersey-version}</version>
    </dependency>

...然后使用 mvn eclipse:eclipse 导入到 Eclipse。然后在 Eclipse 中,编辑 Main.java 并取消注释以下行:

    rc.addBinder(org.glassfish.jersey.media.json.JsonJaxbBinder);

这会导致以下编译错误:“org.glassfish.jersey.media 无法解析为变量”。

然后我就陷入困境了。我哪里做错了 ?

我还想了解“JSON 支持”是什么意思?在基于 jersey-1.17 的程序的早期版本中,我设法在我的 Rest 资源上使用 @Produces({ MediaType.APPLICATION_JSON}) 注释。在“引用库”中,我看到四个 jackson 库。在新项目中我没有看到任何 jackson 库。这是因为依赖关系没有正确解决吗?或者 jersey-2.0 不再使用 Jackson 了?

感谢任何帮助。

最佳答案

主类中的注释似乎完全具有误导性,因为:

  • jersey-media-moxy 不包含 org.glassfish.jersey.media.json.JsonJaxbBinder 类
  • ResourceConfig 没有 addBinder 方法(至少在当前的 2.0-rc1 版本中)

无论如何,您仍然可以在 Jersey 2.0 中使用 Jackson。只需包含对 jackson-jaxrs-json-provider 的依赖即可:

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.2.0</version>
</dependency>

并注册 JacksonJaxbJsonProvider:

rc.register(JacksonJaxbJsonProvider.class);

关于Jersey 2.0-m2 中的 JSON 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024718/

相关文章:

java - 如何解决 "weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer"错误

java - 如何在 Jersey RESTful web 服务中放置 cookie?

python - 来自嵌套字典的 Pandas 数据框( Elasticsearch 结果)

json - 大纪元时间(自 1970 年开始计时)- Mac 与 Windows

javascript - 使用 FS 读取字符串会返回此错误 : Unexpected token r in JSON at position 0

javascript - For 循环不会按原始顺序附加到其他 json

java - 在 application.yml (Spring Boot) 中访问 Maven 属性 "developers"

Scala REPL : How to add remote Maven repository to Scala REPL classpath?

java - 如何根据 JPA Web API 中的类型将 JSON 数据转换为两种 JSON 数组格式

java - 在 Jersey 生命周期中如何拦截请求?