【发布时间】:2011-09-14 10:59:09
【问题描述】:
我编写的客户端使用 Jersey 客户端 API 向 REST 服务发出 GET 请求。 响应是对象的集合,我需要反序列化它。这是我的代码:
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client client = Client.create(clientConfig);
WebResource r = client
.resource("http://localhost:8080/rest/gadgets");
和代表“小工具”模型的类(用 @XmlRootElement 注释以进行 JAXB 处理):
@XmlRootElement
public class Gadget {
private String url;
private String title;
private String name;
public Gadget() {
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如果响应只是小工具副本,而不是集合,则可能看起来像
Gadget result = r.get(Gadget.class);
但是响应的 JSON 包含一个小工具列表,我需要将其读取到 java 集合中。像
List<Gadget> result = r.get(List<Gadget>.class);
不编译。有人可以在这里帮助我吗? 我不想使用任何额外的库,我相信这可以使用 jersey-json.jar 和 JAXB 来完成,但不知道如何。
【问题讨论】: