У меня есть метод с таким вызовом restTemplate:
restTemplate.getForObject(apiUrl ,Someclass.class);
Someclass.class:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Imp implements Serializable {
@JsonProperty("Id")
private String Id;
@JsonProperty("ReportId")
private String ReportId;
@JsonProperty("Title")
private String Title;
@JsonProperty("Name")
private String Name;
@JsonProperty("Uri")
private String Uri;
}
API возвращает массив, и я получаю ошибка:
org.springframework.web.client.RestClientException: Ошибка при извлечении ответа для типа [класс ...] и типа содержимого [приложение / json; charset = utf-8]; вложенное исключение - org.springframework.http.converter.HttpMessageNotReadableException: ошибка синтаксического анализа JSON: невозможно десериализовать экземпляр com... из токена START_ARRAY; вложенное исключение com.fasterxml.jackson.databind.exc.MismatchedInputException: невозможно десериализовать экземпляр com... из токена START_ARRAY
Какой метод restTempalte следует использовать для получения правильного ответа API? Или в чем проблема? Спасибо!




Вы сказали, что API возвращает массив.
Но ваша строчка кода restTemplate.getForObject(apiUrl ,Someclass.class);
будет работать только для одного объекта Someclass.
Вы должны использовать новый ParameterizedTypeReference<List<Someclass.class>> вместе с методом обмена.
См. Ссылку ниже
Получить список объектов JSON с помощью Spring RestTemplate
Проверьте документ docs.spring.io/spring-framework/docs/current/javadoc-api/org /…. Возможно, отсутствуют операторы импорта
хорошо, мне пришлось импортировать его вручную, вы можете сказать, каким должен быть метод? Если я сделаю это: restTemplate.getForObject (apiUrl, ParameterizedTypeReference <List <Someclass.class >>); Ожидается выражение, указанное IDE ...
я мог бы решить это следующим образом: stackoverflow.com/questions/23674046/… yonia's answer
ParameterizedTypeReference не распознается IDE.