我编写了使用Jersey Client 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");
Run Code Online (Sandbox Code Playgroud)
和表示"小工具"模型的类(使用@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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果响应只是Gadget副本而不是集合,那么可能看起来像
Gadget result = r.get(Gadget.class);
Run Code Online (Sandbox Code Playgroud)
但是响应中的JSON包含一个小工具列表,我需要将其读取到java集合中.就像是
List<Gadget> result = r.get(List<Gadget>.class);
Run Code Online (Sandbox Code Playgroud)
不编译.有人可以帮我吗?我不想使用任何额外的库,我相信这可以使用jersey-json.jar和JAXB完成,但不知道如何.
小智 17
我想你想使用GenericType的匿名子类:
r.get(new GenericType<List<Gadget>>() {});
Run Code Online (Sandbox Code Playgroud)
List<Gadget>.class 因为类型擦除而无法工作.
| 归档时间: |
|
| 查看次数: |
13413 次 |
| 最近记录: |