Невозможно десериализовать значение типа `...` из значения массива (токен `JsonToken.START_ARRAY`)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно десериализовать значение типа `...` из значения массива (токен `JsonToken.START_ARRAY`)

Сообщение Anonymous »

Моя проблема заключается в том, что я пытаюсь отобразить конечную точку API, но постоянно сталкиваюсь с ошибкой. Я немного новичок и совсем не знаю, как составить код для решения этой проблемы.
Моя ошибка
Ошибка при извлечении ответа для типа [класс com.jokeapi.jokeDemo.domain.jokeResponse] и типа контента [application/json;charset=utf-8]] с основной причиной com.fasterxml.jackson.databind .exc.MismatchedInputException: невозможно десериализовать значение типа com.jokeapi.jokeDemo.domain.jokeResponse из значения массива (токен JsonToken.START_ARRAY)
Я использую Spring Boot и следую руководству по подключению к конечным точкам API
В моем классе загрузки Spring выглядит так с сеттерами и геттерами. Это отлично работает для других конечных точек API, которые возвращают объекты в парах «ключ-значение».

Код: Выделить всё

@Getter
@Setter
public class jokeResponse {
private Long id;
private String type;
private String setup;
private String punchline;
}
В качестве примера я могу вернуть конечные точки JSON для объектов, которые находятся в моем классе шутки:

Код: Выделить всё

{
id: 281,
type: "general",
setup: "When does a joke become a dad joke?",
punchline: "When it becomes apparent."
}
Но вот моя проблема. В моем классе реализации у меня есть следующее: метод возврата для getForObjects, указывающий на класс шуткиОтвет для этой конечной точки, которая указывает на этот массив. Это неправильно, поскольку класс указывает на конечную точку API только для объектов с парами «ключ-значение», указанными выше.

Код: Выделить всё

 @Override
public jokeResponse getTypesList() {
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject("https://official-joke-api.appspot.com/types", jokeResponse.class);
}
Конечная точка JSON выглядит следующим образом: массив строк:

Код: Выделить всё

[
"general",
"knock-knock",
"programming",
"dad"
]
Мне нужно создать метод, чтобы он извлекал массив строк из объектов, и я не знаю, как это сделать.
Я попробовал заменить класс на String[].class в методе getForObjects, но это не помогло.

Подробнее здесь: https://stackoverflow.com/questions/790 ... oken-start
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»