Как проанализировать JSON, возвращаемый вызовом REST API, в коллекцию объектов в JAX-RS? - PullRequest
0 голосов
/ 21 сентября 2018

Я довольно новичок в 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 в свой пользовательский тип, потому что мне не нужны все остальные данные, в случае, еслиэто имеет значение.Может кто-нибудь сказать мне, почему это не анализируется?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...