Ошибка синтаксического анализа Java Spring JSON: невозможно десериализовать экземпляр из маркера START_ARRAY - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть метод с вызовом 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: Ошибка при извлечении ответа для типа [class ...] и типа контента [application / json; charset = utf-8];вложенное исключение - org.springframework.http.converter.HttpMessageNotReadableException: ошибка синтаксического анализа JSON: невозможно десериализовать экземпляр com... из маркера START_ARRAY;Вложенное исключение: com.fasterxml.jackson.databind.exc.MismatchedInputException: Невозможно десериализовать экземпляр com... из токена START_ARRAY

Какой метод restTempalte следует использовать для получения правильного ответа API? или гдеэто проблема?. Спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Вы сказали, что API возвращает массив.

Но ваша строка кода restTemplate.getForObject(apiUrl ,Someclass.class); будет работать только для одного объекта Someclass.

Вы должны использовать новый ParameterizedTypeReference<List<Someclass.class>> вместе сметод обмена.

См. ссылку ниже

Получить список объектов JSON с помощью Spring RestTemplate

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