#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;
}