泽西2.0平方米的JSON支持

时间:2013-02-22 12:53:07

标签: json maven jersey jackson grizzly

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

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

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

这是默认情况下没有JSON支持。我设法在Eclipse中导入并运行它,看看“搞定了!”我浏览器中的页面。 JSON-Support可以通过在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})注释。在“参考图书馆”中,我看到了四个杰克逊图书馆。在新项目中,我没有看到任何杰克逊图书馆。那是因为依赖关系没有正确解决?或者是jersey-2.0不再使用Jackson?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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);