Я пишу клиент, который делает запрос GET службой REST с использованием API-интерфейса Jersey Client. Ответ - это набор объектов, и мне нужно десериализовать его. Вот мой код:
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, а не коллекцией, он мог бы выглядеть как
Gadget result = r.get(Gadget.class);
Но JSON в ответе содержит список гаджетов, и мне нужно прочитать его в java-коллекции. Что-то вроде
List<Gadget> result = r.get(List<Gadget>.class);
не компилируется. Может ли кто-нибудь помочь мне здесь? Я не хочу использовать какие-либо дополнительные библиотеки, я считаю, что это можно сделать с помощью jersey-json.jar и JAXB, но не знаю, как это сделать.