Handle JSON and XML 处理 JSON 和 XML

    我们想把这个对象返回给客户端,在 MyResource 资源下,写了

    1. /**
    2. * 方法处理 HTTP GET 请求。返回的对象以"application/json"媒体类型
    3. * 给客户端
    4. *
    5. * @return MyPojo 以 application/json 形式响应
    6. */
    7. @GET
    8. @Path("pojojson")
    9. @Produces(MediaType.APPLICATION_JSON)
    10. public MyBean getPojoJson() {
    11. MyBean pojo = new MyBean();
    12. pojo.setName("waylau.com");
    13. pojo.setAge(28);
    14. return pojo;

    其中 @Produces(MediaType.APPLICATION_XML)意思是以 JSON 形式将对象返回给客户端。

    在 index.jsp 里面,我们写了一个调用该 API 的方法

    1. <p><a href="webapi/myresource/pojojson">POJO JSON</a>

    启动项目,点击“POJO JSON”,后台提示如下错误

    那是因为 POJO 对象未被序列化成 JSON 对象,所以找不到,下面介绍几种常用的序列化手段。

    1. <dependency>
    2. <groupId>org.glassfish.jersey.media</groupId>
    3. </dependency>

    由于 JSON 绑定特性是在自动发现的列表里,所以无需再注册该特性就使用了。(关于“自动发现”,详见《》“4.3.自动发现的特性”一节)

    启动项目,点击“POJO JSON”,页面输出

    1. {"age":28,"name":"waylau.com"}

    采用 Jackson (2.x)

    使用 Jackson 2.x 需添加 jersey-media-json-jackson 模块到 pom.xml:

    我们想把这个对象返回给客户端,在 MyResource 资源下,写了

    1. /**
    2. * 方法处理 HTTP GET 请求。返回的对象以"application/xml"媒体类型
    3. * 给客户端
    4. *
    5. * @return MyPojo 以 application/xml 形式响应
    6. */
    7. @GET
    8. @Path("pojoxml")
    9. @Produces(MediaType.APPLICATION_XML)
    10. public MyBean getPojoXml() {
    11. MyBean pojo = new MyBean();
    12. pojo.setName("waylau.com");
    13. pojo.setAge(28);
    14. return pojo;

    在 index.jsp 里面,我们写了一个调用该 API 的方法

    1. <p><a href="webapi/myresource/pojoxml">POJO XML</a>

    启动项目,点击“POJO XML”,后台提示如下错误

    那是因为 POJO 对象未被序列化成 XML 对象,所以找不到,解决方法很简单,在 MyBean 上面加上注解即可

    1. @XmlRootElement
    2. public class MyBean {
    3. private String name;
    4. private int age;
    5. public String getName() {
    6. return name;
    7. }
    8. public void setName(String name) {
    9. this.name = name;
    10. }
    11. public int getAge() {
    12. return age;
    13. }
    14. public void setAge(int age) {
    15. this.age = age;
    16. }
    17. }

    作用是将一个类或一个枚举类型映射为一个 XML 元素。

    再次启动项目,点击“POJO XML”,显示正常

    见 项目。