Ошибка при попытке передать JSON коллекции postman объекту запроса java, почему?

#java #arraylist #postman #marshalling

Вопрос:

Я пытаюсь использовать коллекцию почтальонов в качестве входных данных JSON и перенаправить ее в объект Java запроса. Ниже приведен мой ввод и соответствующий объект java вместе с ошибкой.

 {"item": [
{
  "name": "name1",
  "item": [
    {
      "name": "name2",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "irrelevant data",
              "irrelevant data"
            ],
            "type": "text/javascript",
            "id": "1234"
          }
        }
      ]
    }
 

Объекты Java:

 public class Request {
    private List<Item> item;
}

public class Item {
    private String name;
    private List<Event> event;
    private List<Item> item;
}
 

Ошибка:

Ошибка декодирования JSON: Не удается десериализовать экземпляр элемента из маркера START_ARRAY, вложенным исключением является исключение com.fasterxml.jackson.databind.exc.MismatchedInputException

Если я избавлюсь от элемента списка из класса элементов, запрос будет выполнен, но я получу только первый элемент, имя 1, и это все, что я получу. Я попытался сделать так, чтобы класс элемента содержал элемент массива[] и только один элемент «Элемент», но все они приводят к одной и той же ошибке.

Ответ №1:

Поскольку у класса Item не может быть поля List<Item> , я думаю, он сделает рекурсию. Ты можешь сделать вот так.

 public class Request {
    private List<Item> item;
}

public class Item {
    private String name;
    @JsonProperty("item")
    private List<NestedItem> nestedItem;
}

public class NestedItem {
    private String name;
    private List<Event> event;
}