【发布时间】:2011-07-20 12:41:54
【问题描述】:
我尝试将 Jersey 中的字符串列表作为 JSON 和 XML 返回。 我认为这将是微不足道的。
我的第一次尝试是写这样的东西
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("/bar")
public List<String> get() {
return dao.get();
}
我希望输出与此类似:["string1", ..., "stringN] 不幸的是,我得到了这个:
com.sun.jersey.api.MessageException: A message body writer for Java class java.util.LinkedList, and Java type java.util.List<java.lang.String>, and MIME media type application/json was not found
然后我为 List 写了一个包装器 StringList
@XmlRootElement
public class StringList {
private List<String> data;
public StringList() {
}
public StringList(List<String> data) {
this.data = data;
}
public List<String> getData() {
return data;
}
public void setData(List<String> data) {
this.data = data;
}
}
并将外观修改为
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("/foo")
public StringList stringlist() {
return new StringList(sl());
}
这对于项目数超过 1 的列表非常有用。
{"data":["foo","bar"]}
不幸的是,对于一个或零个元素,我得到了两个意外结果
{"data": "just one"} // for one element i would expect {"data": ["just one"]}
null // for no elements i would expect {"data": []}
我做错了什么吗? 我该如何解决这个问题?
【问题讨论】: