我和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吗?
答案 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 }}