Я довольно новичок в JAX-RS, поэтому терпите меня по этому вопросу.Я пытаюсь использовать REST API с использованием инфраструктуры JAX-RS.В частности, я пытаюсь вызвать метод HTTP GET для ресурса, где объект ответа будет в формате JSON.До сих пор я мог анализировать возвращенный JSON в настраиваемый класс со следующим фрагментом кода:
WebTarget target = client.target(url);
Builder builder = target.request(MediaType.APPLICATION_JSON);
myClass obj = builder.get(myClass.class);
Однако в моем последнем GET-запросе возвращение JSON будет лучше всего абстрагироваться как набор объектов.Я знаю, что в .NET это можно сделать довольно легко с
JsonConvert.DeserializeObject<List<myClass>>
, но как мне это сделать в JAX-RS?Заранее спасибо.
РЕДАКТИРОВАТЬ:
Я моделирую свой код после решения в Как получить список как ответ от клиента jersey2
WebTarget target = client.target(url);
Builder builder = target.request(MediaType.APPLICATION_JSON);
builder.header(X_OCTOPUS_APIKEY_NAME, apiKey);
Response serviceResponse = builder.get(Response.class);
List<myType> objects = serviceResponse.readEntity(new GenericType<List<myType>>() {});
Однако возвращаемые объекты всегда равны нулю.Чтобы проверить, действительно ли вызов API REST возвращает действительное значение JSON, я заменяю последнюю строку на:
String strDate = serviceResponse.readEntity(String.class);
Это подтверждается следующим возвращением JSON:
[
{
"Id": "Users-267",
"Username": "mdamon@mydomain.com",
"DisplayName": "Damon, Matt",
"IsActive": true,
"IsService": false,
"EmailAddress": "mdamon@mydomain.com",
"IsRequestor": false,
"Links": {
"Self": "/api/users/Users-267",
"Permissions": "/api/users/Users-267/permissions",
"ApiKeys": "/api/users/Users-267/apikeys{/id}{?skip}",
"Avatar": "https://www.gravatar.com/avatar/94324e7c54a9a5f9d103b2a709863fc3?d=blank"
}
},
{
"Id": "Users-2101",
"Username": "baffleck@mydomain.com",
"DisplayName": "Affleck, Ben",
"IsActive": true,
"IsService": false,
"EmailAddress": "baffleck@mydomain.com",
"IsRequestor": false,
"Links": {
"Self": "/api/users/Users-2101",
"Permissions": "/api/users/Users-2101/permissions",
"ApiKeys": "/api/users/Users-2101/apikeys{/id}{?skip}",
"Avatar": "https://www.gravatar.com/avatar/11edd32712facde9a7d3dd4445a4abe9?d=blank"
}
},
...
]
По причинеJSON не анализируется в коллекции моего пользовательского типа.Одна дополнительная часть информации - мой пользовательский, определяется следующим образом:
@XmlRootElement
public class myType {
String DisplayName;
String EmailAddress;
public myType() {
super();
}
public void setDisplayName(String displayName) {
DisplayName = displayName;
}
public String getDisplayName() {
return DisplayName;
}
public void setEmailAddress(String emailAddress) {
EmailAddress = emailAddress;
}
public String getEmailAddress() {
return EmailAddress;
}
}
Я включаю только поля DisplayName и EmailAddress JSON в свой пользовательский тип, потому что мне не нужны все остальные данные, в случае, еслиэто имеет значение.Может кто-нибудь сказать мне, почему это не анализируется?Спасибо