2012-10-14 36 views
13

Tôi muốn sử dụng Jersey để triển khai một số dịch vụ Java REST. Công cụ chuyển đổi POJO mặc định JAXB xử lý các đối tượng JSON hơi lạ, vì vậy tôi muốn sử dụng Jackson để chuyển đổi POJO với chi phí ít hoặc ít hơn. Làm cách nào để tôi nói với khung công tác J2ME sử dụng một công cụ chuyển đổi khác?Cách dễ dàng sử dụng Jackson cho Jersey

web.xml của tôi trông như thế này:

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

Trả lời

16

chỉ cần thêm lọ jackson và sửa đổi web.xml như thế này:

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

Các yêu cầu Jackson lọ (http://jackson.codehaus.org/) là:

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 thats đơn giản – daskai0815

+0

Nó (cảm ơn!) không làm việc cho tôi. Tôi nhận được thông báo lỗi "Trình soạn thảo nội dung thư cho lớp Java ... và ứng dụng loại phương tiện MIME/json không được tìm thấy" – TOUDIdel

+0

Để kéo các JAR Jackson yêu cầu bằng Maven chỉ phụ thuộc vào 'jackson-mapper-asl'. – lanoxx

5

Ngoài đăng ký nhà cung cấp Jackson 1.x, bạn cũng có thể sử dụng Jackso n 2.x Nhà cung cấp JSON (với mô-đun dữ liệu Jackson 2.x và mô-đun lõi nó phụ thuộc vào): https://github.com/FasterXML/jackson-jaxrs-json-provider Nó tự động đăng ký với giao diện nhà cung cấp dịch vụ (1.x không phải vì người dùng lo sợ có thể ngạc nhiên bởi điều này, vì nó dựa trên sự tồn tại của một cái lọ trong classpath thay vì lựa chọn rõ ràng).

EDIT (Sep 2013): Như đã chỉ ra bởi @koppor, module này sẽ không được chấp, và những người thay thế (JSON, XML, Nụ cười) có thể được tìm thấy từ https://github.com/FasterXML/jackson-jaxrs-providers

+1

Bắt đầu với Jackson 2.2, mô-đun đó không còn được dùng nữa. Sử dụng https://github.com/FasterXML/jackson-jaxrs-providers để thay thế. – koppor

Các vấn đề liên quan