【问题标题】:JSON support in Jersey 2.0-m2Jersey 2.0-m2 中的 JSON 支持
【发布时间】:2013-02-22 12:53:07
【问题描述】:

(我在 Stackoverflow 上的第一篇文章,刚接触 maven 和 Jersey ;-)

尝试开发一个独立的 jersey-JSON-application,我从最新的 mvn 原型开始

    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-resource 上使用了 @Produces({ MediaType.APPLICATION_JSON}) 注释。在“引用库”中,我看到了四个杰克逊库。在新项目中,我没有看到任何杰克逊库。那是因为没有正确解决依赖关系吗?还是 jersey-2.0 不再使用 Jackson 了?

感谢任何帮助。

【问题讨论】:

  • 你能弄清楚吗?

标签: json maven jersey jackson grizzly


【解决方案1】:

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

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

无论如何,您仍然可以将 Jackson 与 Jersey 2.0 一起使用。只需包含对 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2014-01-20
    • 2011-07-06
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多