SpringBoot десериализует массив JSON в Java, используя Джексона - PullRequest
0 голосов
/ 07 июля 2019

В настоящее время я пишу приложение SpringBoot, которое извлекает массив JSON из внешнего API.Часть JSON, которая мне нужна, выглядит следующим образом:

{
"users": [
    "id": 110,
    "name": "john"
  ]
}

В моем контроллере я делаю следующее:

 ResponseEntity<Users> response = restTemplate
    .exchange(url, headers, Users.class);

return response

Затем у меня есть класс Users, который выглядит следующим образом:

@JsonProperty("id")
public String id;
@JsonProperty("name")
public string name;

Как получить доступ к информации внутри массива JSON?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Вместо загрузки в POJO, основанный на вашем типе возврата, вы должны принять список пользователей.

Вы не можете принять Список пользовательских классов в ResponseEntity, который необходимо сначала преобразовать в объектный класс.

ResponseEntity<Object> response = restTemplate .exchange(url, headers, Object.class);

Затем вам нужно преобразовать его в список пользователей.

List<Users> usersList = (List<Users>) response.getBody();

0 голосов
/ 07 июля 2019

JSON, который вы разместили выше, неверен. Это должно быть:

{
   "users": [
       {
          "id": 110,
          "name": "john"
       }
    ]
}

и любой используемый объект нуждается в списке Users.

Другое дело, что вы restTemplate вызов неправильный, вы ожидаете, что вызов вернет класс ResponseEntity<Opportunities>, когда в вашем restTemplate вы даете ему класс User, и вместо этого вы получите ResponseEntity<User>

...