如何轻松地将杰克逊用于泽西岛

das*_*815 13 json jersey java-ee jackson

我想使用Jersey来实现一些Java REST服务.默认的POJO转换器JAXB处理JSON对象有点奇怪,所以我想使用Jackson以很少或更少的开销转换POJO.我该如何告诉J2ME框架使用另一个转换器?

我的web.xml看起来像这样:

<!-- Jersey JAVA REST implementation -->
<servlet>
<servlet-name>Jersey</servlet-name>
    <servlet-class>
        com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>org.foobar.rest.services</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

msc*_*ock 17

只需添加jackson JAR并修改web.xml,如下所示:

<!-- Jersey JAVA REST implementation -->
<servlet>
<servlet-name>Jersey</servlet-name>
    <servlet-class>
        com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>org.foobar.rest.services;org.codehaus.jackson.jaxrs</param-value>    <!--  use jackson for JSON -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

所需的杰克逊JAR(http://jackson.codehaus.org/)是:

jackson-core-asl-1.9.10.jar
jackson-core-lgpl-1.9.10.jar
jackson-jaxrs-1.9.10.jar
jackson-mapper-asl-1.9.10.jar
jackson-mapper-lgpl-1.9.10.jar
jackson-mrbean-1.9.10.jar
jackson-smile-1.9.10.jar
jackson-xc-1.9.10.jar
Run Code Online (Sandbox Code Playgroud)


Sta*_*Man 5

除了注册Jackson 1.x提供程序之外,您还可以使用Jackson 2.x JSON提供程序(使用Jackson 2.x数据绑定及其依赖的核心模块):https://github.com/FasterXML/jackson-jaxrs-json -provider 它自动注册自己的服务提供者接口(1.x没有,因为它担心用户可能会对此感到惊讶,因为它基于类路径中存在jar而不是显式选择).

EDIT(2013年9月):正如@koppor所指出的,这个模块已被弃用,可以从https://github.com/FasterXML/jackson-jaxrs-providers找到替换模块(JSON,XML,Smile)(谢谢!)