如何以编程方式配置Jersey以使用Jackson进行JSON(反)序列化?

时间:2012-03-12 15:54:12

标签: java json jersey jackson grizzly

我和Grizzly一起使用Jersey创建了一个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吗?

2 个答案:

答案 0 :(得分:1)

我收到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>

答案 1 :(得分:0)

查看the Jackson jax-rs module中的JacksonJsonProvider

你需要在泽西认可的IoC容器中挂钩它(或者像JacksonJaxbJsonProvider这样的子类)(默认情况下是它自己的,但我个人更喜欢Guice),或者让它注册为{{1 }}