如何使用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