【问题标题】:How do I programmatically configure Jersey to use Jackson for JSON (de)serialization?如何以编程方式配置 Jersey 以使用 Jackson 进行 JSON(反)序列化?
【发布时间】:2012-03-29 01:07:39
【问题描述】:

我正在使用 Jersey 和 Grizzly 来创建 JSON Web 服务。我将其初始化如下:

    final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
    rc.getProperties().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
    return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);

我没有 web.xml 文件。我注意到 Jersey 将单个元素列表映射为“元素”,而不是我所期望的“[元素]”。显然这是因为 Jersey 使用了除 Jackson 之外的 POJO->JSON 映射器,出于我无法理解的原因,他们认为自动解开单元素列表是个好主意。

我找到了如何通过配置 web.xml 文件让 Jersey 使用 Jackson 的解释,但由于我没有 web.xml,我不确定如何执行此操作。

谁能解释我如何以编程方式配置 Jersey 以使用 Jackson?

【问题讨论】:

    标签: java json jersey jackson grizzly


    【解决方案1】:

    看看the Jackson jax-rs module中的JacksonJsonProvider

    您需要将它(或 JacksonJaxbJsonProvider 之类的子类)挂接到 Jersey 可识别的 IoC 容器(默认情况下是它自己的,但我个人更喜欢 Guice),或者以其他方式将其注册为 @Provider

    【讨论】:

    • 嗯?使用 Jersey 的最佳方法之一是使用 IoC。比 web.xml 或手工布线好多了!
    • +1:我通过 Guice 使用这种方法得到了我想要的东西。请参阅此博客文章:flamingpenguin.co.uk/blog/2012/08/17/…
    【解决方案2】:

    我收到了how do I enable POJO-mapping programatically in Jersey using Grizzly2?的回复

    想法是将 jersey-json 库添加到您的应用程序中。

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2015-01-05
      • 1970-01-01
      • 2023-03-31
      • 2012-03-07
      相关资源
      最近更新 更多