如何使用JAXB为Jersey 1.6生成JSON输出
@XmlRootElement
public class Todo {
private String s = "test";
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
}
和服务:
@Path("/test")
public class Service {
@GET
@Produces({MediaType.APPLICATION_JSON })
public List<Todo> getAllGadgets() {
return Arrays.asList(new Todo[] { new Todo() });
}
}
我的web.xml:
<servlet>
<servlet-name>Jersey REST Service</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>com.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
如果为Products注释设置MediaType.APPLICATION_XML,所有这些工作。 但对于JSON,我得到以下异常:
重度:映射例外响应:500(内部服务器错误)javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:消息正文作家Java类java.util.Arrays中的$ ArrayList中,和Java类型的Java未找到.util.List和MIME媒体类型application / json
我使用Jersey 1.6,根据教程,JSON格式应该与JAXB协同工作,无需任何额外的编程。 怎么了?
我解决了这个问题 我需要做的就是将jersey-json-1.6.jar库添加到项目中(这不是球衣的一部分)
将以下参数添加到web.xml文件中的球衣小服务程序中,这是jersey-servlet的最新1.x版本所必需的。
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
我使用Google App Engine,并且在这方面也遇到了很多困难,如果你使用jersey-bundle-1.17.jar,那么大多数东西都会工作,直到你添加
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
你会得到很多奇怪的消息。 这是因为你想念杰克逊罐子。 如果你去球衣主页并下载zip和捆绑包。 只需放下捆绑包,然后从zip文件中添加4个jackson jar到你的classpath中,你应该能够正常工作而不会出错。
添加jackson-jaxrs-1.9.2.jar解决下面这个错误
SEVERE: The registered message body writers compatible with the MIME media type are:
application/json ->
添加jackson-xc-1.9.2.jar解决以下这个问题
java.lang.NoClassDefFoundError:org / codehaus / jackson / xc / JaxbAnnotationIntrospector
我希望这有助于某人。
链接地址: http://www.djcxy.com/p/45569.html上一篇: How to produce JSON output with Jersey 1.6 using JAXB
下一篇: Setting slime