2012-10-14 10 views
13

Chcę używać Jersey do implementacji niektórych usług REST Java. Domyślny konwerter POAX JAXB obsługuje obiekty JSON nieco dziwne, więc chcę użyć Jacksona do konwersji POJO z niewielkim lub mniejszym obciążeniem. W jaki sposób mogę powiedzieć, że framework J2ME używa innego konwertera?Jak z łatwością używać Jackson'a dla Jersey

Moja web.xml wygląda następująco:

<!-- 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> 

Odpowiedz

16

prostu dodać Jackson słoików i modyfikować web.xml takiego:

<!-- 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> 

Wymagana Jackson JAR (http://jackson.codehaus.org/) są:

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 
+1

Wow ów prosty – daskai0815

+0

To (dzięki!) nie działa dla mnie. Pojawia się błąd "Program do zapisu treści wiadomości dla klasy Java ... i nie znaleziono aplikacji typu nośnik MIME/json" – TOUDIdel

+0

Aby pobrać wymagane pliki JAR Jacksona z Maven, należy po prostu polegać na 'jackson-mapper-asl'. – lanoxx

5

Oprócz rejestracji operatora Jackson 1.x, możesz również użyć Jackso n 2.x dostawca JSON (z bazą danych Jackson 2.x i modułem rdzenia, od którego to zależy): https://github.com/FasterXML/jackson-jaxrs-json-provider Automatycznie rejestruje się za pomocą interfejsu dostawcy usług (1.x nie było, ponieważ obawiano się, że użytkownicy mogą być tym zaskoczeni, ponieważ opiera się na istnieniu słoika w ścieżce klas zamiast wyraźnego wyboru).

EDIT (wrzesień 2013): Jak podkreślił @koppor, moduł ten jest przestarzała, a ci zamienne (JSON, XML, Smile) można znaleźć od https://github.com/FasterXML/jackson-jaxrs-providers

+1

Począwszy od wersji Jackson 2.2, ten moduł jest przestarzały. Zamiast tego użyj https://github.com/FasterXML/jackson-jaxrs-providers. – koppor

Powiązane problemy