Преобразование JSON в объект создает исключение JsonMappingException «Не удается десериализовать экземпляр класса из токена START_ARRAY» - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь получить информацию о моих Trello платах, используя их REST API ( ссылка ), и сохранить ее в Java Объекте. Я выполнил начальные шаги и, выполнив эту команду, получил всю необходимую информацию:

curl https://api.trello.com/1/members/me/boards?fields=name,url&key={apiKey}&token={apiToken}

, которая возвращает данные в следующем формате:

[
  {
   "name": "Greatest Product Roadmap",
   "id": "5b6893f01cb3228998cf629e",
   "url": "https://trello.com/b/Fqd6NosI/greatest-product-roadmap"
  },
  {
    "name": "Never ending Backlog",
    "id": "5b689b3228998cf3f01c629e",
    "url": "https://trello.com/b/pLu77kV7/neverending-backlog"
  },
  //....
{

Я создаю Board Класс

@JsonIgnoreProperties(ignoreUnknown = true)
public class Board {
    private String name;
    private String shortLink;
    private String idBoardSource;
    private String id;
    private String url;

    public Board() {
    }

    //getters, setters
}

В моем сервлете я выполняю:

//Get the response
String command = "curl -X GET https://api.trello.com/1/members/me/boards?fields=name,url&key={apiKey}&token={apiToken}";
ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
processBuilder.directory();
Process process = processBuilder.start();
InputStream inputStream = process.getInputStream();

//Convert the InputStream into String
String jsonString = IOUtils.toString(inputStream, StandardCharsets.UTF_8);

//try to create an Board class
Board board = new ObjectMapper().readValue(jsonString, Board.class);

Однако я получаю ошибку:

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of gr.kotronis.trello.Board out of START_ARRAY token

Я попытался и добавил @JsonIgnoreProperties(ignoreUnknown = true), но ошибка все еще появляется .. Я искал похожие вопросы об этой ошибке, но не нашел решения .. Формат данных ответа правильный, поэтому я не понимаю, почему я получаю эту ошибку ...

1 Ответ

1 голос
/ 27 апреля 2020

Проблема в том, что вам нужно десериализовать массив JSON как массив java или список java. Здесь вы можете найти ответ Как использовать Джексона для десериализации массива объектов .

...