Restful WebService使用Jersey将xml转换为json格式

时间:2013-07-18 22:06:49

标签: java xml json eclipse web-services

您好我已经用xml格式编写了简单的“hello”消息并且它有效,我的问题是我如何以Json格式转换下面的xml“hello”消息,我应该输入什么样的更改?

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class Hello {
    //Called if XML is request
        @GET
        @Produces(MediaType.TEXT_XML)
        public String sayXMLHello() {
            return "<?xml version=\"1.0\"?>" + "<hello> Hello, World!" + "</hello>";
        }
    //Called if JSON is request

2 个答案:

答案 0 :(得分:2)

准备域对象。

@XmlRootElement
public class Hello {

    @XmlValue
    private String value = "Hello, World!";
}

现在JAX-RS可以做你想做的事。

@Path("/hello")
public class HelloResource {

    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Hello read() {
        return new Hello();
    }

    @GET
    @Path("/world.xml")
    @Produces({MediaType.APPLICATION_XML})
    public Hello readXml() {
        return new Hello();
    }

    @GET
    @Path("/world.json")
    @Produces({MediaType.APPLICATION_JSON})
    public Hello readJson() {
        return new Hello();
    }
}

现在任何客户端都可以选择使用HTTP标头获取的格式。

Accept: application/xml

Accept: application/json

说,

$ curl http://.../hello
$ curl -H "Accept: application/xml" http://.../hello
$ curl -H "Accept: application/json" http://.../hello
$ curl http://.../hello/world.xml
$ curl http://.../hwllo/world.json

<强>参考

答案 1 :(得分:0)

媒体类型定义输出种类。

更改mediatype @Produces(MediaType.TEXT_XML)

要 @Produces(MediaType.APPLICATION_JSON)