2011-03-28 86 views
2

我是Jersey,JAXB和JSON的新手,并且使用XML格式很绿。我正在玩一个简单的Web服务(它努力成为RESTful)。Jersey/JAXB/XML/JSON:为从POJO创建的文档添加元素

鉴于以下POJO:

@XmlRootElement 
public class POJO { 
    . 
    . 
    @XmlElement 
    public String getProp1 { 
    return prop1; 
    } 

    @XmlElement 
    public String getProp2 { 
    return prop2; 
    } 
} 

和下面的资源类:

@Path("/resource) 
public class Resource { 

    @Path("/pojo") 
    @GET 
    @Produces({"application/xml", "application/json"}) 
    public POJO getPojo() { 
    POJO pojo = new POJO(); 
    pojo.setProp1("foo"); 
    pojo.setProp2("bar"); 
    return pojo; 
    } 
} 

HTTP请求到合适的URI返回XML和JSON我想到:

<?xml version="1.0" encoding="UTF-8"?> 
    <pojo> 
     <prop1>foo</prop1> 
     <prop2>bar</prop2> 
    </pojo> 

{"prop1":"foo","prop2":"bar"} 

接下来,我想更新服务以生成以下输出:

<?xml version="1.0" encoding="UTF-8"?> 
    <pojo> 
     <prop1>foo</prop1> 
     <prop2>bar</prop2> 
     <link>http://coolURI</link> 
    </pojo> 

{"prop1":"foo","prop2":"bar","link":"http://coolURI"} 

其中“coolURI”是指向下一个资源的超媒体指针,显然不是类POJO的属性,所以它的值将以不同方式编组为XML。请指出我需要采用的机制,我应该很乐意去。谢谢你的帮助。

回答

1

您必须从getPojo()方法返回除POJO以外的其他内容。包含链接的扩展POJO,或者以某种方式插入链接的Response对象。