Парсинг списка/массива объектов из yaml с помощью jackson ObjectMapper
Не совсем понимаю какой объект мне надо создать чтобы корректно распарсить данные такого типа:
- name: 'Access is denied'
patterns:
- 'Last error \d+: Access is denied.'
- 'some'
- 'gome'
description: |
Access is denied for the resource.
- name: 'Some error'
patterns:
- 'some'
- 'com'
- 'gone'
description: |
some text description
Думаю что тут нужна map, но не очень получилось это все реализовать.
Файл такого типа:
name: 'Access is denied'
patterns:
- 'Last error \d+: Access is denied.'
- 'some'
- 'gome'
description: |
Access is denied for the resource.
легко смог распарсить в такой класс:
import java.util.List;
public class ErrorInfo {
private String name;
private List<String> patterns;
private String description;
public ErrorInfo(String name, List<String> patterns, String description) {
this.name = name;
this.patterns = patterns;
this.description = description;
}
public ErrorInfo() {
}
Пробовал создавать лист из таких классов но тоже не вышло. Буду рад любому совету.
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
При десериализации Вам надо указать тип, как список или массив Ваших объектов ErrorInfo. Вариантов несколько, см. https://stackoverflow.com/a/6349488/10941639.
Самые, на мой взгляд, простые:
List<ErrorInfo> errors = objectMapper.readValue(yamlSource, new TypeReference<>() {});
List<ErrorInfo> errors = Arrays.asList(objectMapper.readValue(yamlSource, ErrorInfo[].class));