Это мой код:
public ArrayList<Person> getGames() {
WebTarget target = webTarget.path("some/path");
Invocation.Builder invocationBuilder = target.request(MediaType.APPLICATION_JSON);
// add authentication cookie to get request
Response response = invocationBuilder.cookie(this.cookie).get();
int status = response.getStatus();
if (status == 200) { // everything ok
// response has wrong MediaType (text/plain from server side)
// this sets the right MediaType so Jackson (Json deserialization) will handle it
response.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
// How do I do this?
ArrayList<Person> list = response.readEntity(???);
return list;
} else {
return new ArrayList<GameInfo>(); // FIXME: This may throw an exception
}
}
Я знаю, как десериализуется один объект JSON:
Person person = response.readEntity(Person.class);
и это делается внутренне (с Джексоном, я думаю).
Моя проблема в том, что я получаю JSON в форме:
[{"name":"name","age":"age","lives":{"street":"myStreet"}}, .... ]
Я полагаю, что это можно сделать без особых хлопот, но я не могу найти ни одного примера, в котором бы не использовались сильно устаревшие версии Джерси. В документации я не смог найти абзац, который говорит о десериализации массива.
Я ценю любую помощь:)