Java 如何在RESTWeb服务中使用json生成http响应?

Java 如何在RESTWeb服务中使用json生成http响应?,java,web-services,rest,mongodb,jersey,Java,Web Services,Rest,Mongodb,Jersey,我希望在web服务中使用json进行响应,如下所示: HTTP/1.1 200 OK Content-Type: application/vnd.org.snia.cdmi.dataobject+json X-CDMI-Specification-Version: 1.0 { "objectURI" : "/MyContainer/MyDataObject.txt", "objectID" : "AABwbQAQb/ENV52Ai8a3MA==", "parentURI" : "/MyConta

我希望在web服务中使用json进行响应,如下所示:

HTTP/1.1 200 OK
Content-Type: application/vnd.org.snia.cdmi.dataobject+json
X-CDMI-Specification-Version: 1.0
{
"objectURI" : "/MyContainer/MyDataObject.txt",
"objectID" : "AABwbQAQb/ENV52Ai8a3MA==",
"parentURI" : "/MyContainer/",
"mimetype" : "text/plain",
"metadata" : {
"cdmi_size" : "17"
},
"valuerange" : "0-17",
"value" : "Hello CDMI World!"
}
但现在我只能表现得像

HTTP/1.1 200 OK
Content-Type: application/vnd.org.snia.cdmi.dataobject+json
X-CDMI-Specification-Version: 1.0
{
"objectURI" : "/MyContainer/MyDataObject.txt",
"objectID" : "AABwbQAQb/ENV52Ai8a3MA==",
"parentURI" : "/MyContainer/",
}   
如何将
“meta”:{..}
放在上面的
“mimetype”
之后。如何将
“meta”
作为基本CDBObject或其他类型?我使用jersey框架和java编写web服务


谢谢

在Jersey将对象序列化为JSON之前,您需要使用JAXB绑定注释对对象进行注释。下面是一个示例类,请注意,您可以使用@XmlType注释的proporter属性对元素重新排序。也可以为XML元素指定方法名称以外的名称

@XmlRootElement
@XmlType(propOrder = { "name", "elements" })
public class ExampleObject implements Serializable {

    private static final long serialVersionUID = 1L;
    private Collection<String> elements = null;
    private String name = null;

    @XmlElementWrapper(name = "elements")
    @XmlElement(name = "element")
    public Collection<String> getElements() {
        return this.elements;
    }

    public String getName() {
        return this.name;
    }

    public void setElements(final Collection<String> elements) {
            this.elements = elements;
    }

    public void setName(final String name) {
            this.name = name;
    }

}
@XmlRootElement
@XmlType(propoder={“name”,“elements”})
公共类ExampleObject实现了可序列化{
私有静态最终长serialVersionUID=1L;
私有集合元素=null;
私有字符串名称=null;
@XmlElementWrapper(name=“elements”)
@xmlement(name=“element”)
公共集合getElements(){
返回此元素;
}
公共字符串getName(){
返回此.name;
}
公共void集合元素(最终集合元素){
这个元素=元素;
}
public void setName(最终字符串名){
this.name=名称;
}
}

在Jersey将对象序列化为JSON之前,您需要使用JAXB绑定注释对对象进行注释。下面是一个示例类,请注意,您可以使用@XmlType注释的proporter属性对元素重新排序。也可以为XML元素指定方法名称以外的名称

@XmlRootElement
@XmlType(propOrder = { "name", "elements" })
public class ExampleObject implements Serializable {

    private static final long serialVersionUID = 1L;
    private Collection<String> elements = null;
    private String name = null;

    @XmlElementWrapper(name = "elements")
    @XmlElement(name = "element")
    public Collection<String> getElements() {
        return this.elements;
    }

    public String getName() {
        return this.name;
    }

    public void setElements(final Collection<String> elements) {
            this.elements = elements;
    }

    public void setName(final String name) {
            this.name = name;
    }

}
@XmlRootElement
@XmlType(propoder={“name”,“elements”})
公共类ExampleObject实现了可序列化{
私有静态最终长serialVersionUID=1L;
私有集合元素=null;
私有字符串名称=null;
@XmlElementWrapper(name=“elements”)
@xmlement(name=“element”)
公共集合getElements(){
返回此元素;
}
公共字符串getName(){
返回此.name;
}
公共void集合元素(最终集合元素){
这个元素=元素;
}
public void setName(最终字符串名){
this.name=名称;
}
}