在Jersey webservices中也必须对JSON响应使用@XmlRootElement吗?



我的代码实际上包含一个资源类和一个BEan类,它的返回类型是JSON。

资源类

@Path("/json")
public class JSONRetrive {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public JSONT getJson(){
        JSONT jsont = new JSONT();
        jsont.setJsont("inr");
        return jsont;
    }
}

/*是否有任何注释将表示JSON。我需要使用任何其他注释吗? */

我的Bean类

//@XmlRootElement
public class JSONT {
private String jsont;
public String getJsont() {
    return jsont;
}
public void setJsont(String jsont) {
    this.jsont = jsont;
}
}

如果我取消@XmlRootElement的注释,它的工作很好,有没有其他的解决方案,这

我得到了这个@XmlRootElement的替代解决方案,如果我们想在不使用@XmlRootElement的情况下生成JSON响应,我们应该去Jersey Jackson库。在web.xml (DD文件)中添加以下给定代码

<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

如果您正在使用Jersey和Maven,那么只需转到您的pom.xml并根据您的情况取消注释/添加下面的代码

<!-- uncomment this to get JSON support
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-binding</artifactId>
        </dependency>
-->

在此之后,您可以使用@Produces(MediaType.APPLICATION_JSON),您将获得JSON响应。

也许这会有帮助?我不明白为什么使用注释会有问题,至少在这种情况下是这样。你能详细说明这给你带来的问题吗?

最新更新