Подтвердить что ты не робот

Как легко использовать Джексона для Джерси

Я хочу использовать Джерси для реализации некоторых сервисов REST Java. По умолчанию конвертер 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>
4b9b3361

Ответ 1

просто добавьте JARs Jackson и измените 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>

Необходимые JARs Джексона (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

Ответ 2

В дополнение к регистрации провайдера Jackson 1.x вы можете использовать провайдера Jackson 2.x JSON (с базой данных Jackson 2.x и базовым модулем): https://github.com/FasterXML/jackson-jaxrs-json-provider Он автоматически регистрирует себя с помощью интерфейса поставщика услуг (1.x не делал этого, так как он боялся, что пользователи могут быть удивлены этим, поскольку он основан на существовании jar в classpath вместо явного выбора).

EDIT (сентябрь 2013 г.): Как отметил @koppor, этот модуль устарел, а заменяющие (JSON, XML, Smile) можно найти из https://github.com/FasterXML/jackson-jaxrs-providers (спасибо!)