Я пытаюсь проанализировать большой файл YAML (более 3000 строк) в приложении Java, загруженном из другой системы (приложение PHP). У меня ограниченный контроль над самим файлом YAML. Изменения вносятся вручную, и синтаксический анализатор YAML в другой системе, кажется, гораздо более прост в отношении форматирования YAML.
Проблема, с которой я сталкиваюсь, заключается в том, что при попытке проанализировать файл с Джексоном я получаю исключение, потому что несколько строк имеют недопустимый символ в конце. Это приводит к неудаче всей попытки разбора.
Есть ли способ настроить или настроить Джексона так, чтобы он просто пропускал строки или блоки YAML, если они искажены или имеют недопустимые токены?
Пример YAML
example.good_yaml:
description: "Example of good YAML"
example.bad_yaml:
description: "Example of bad YAML")
Код синтаксического анализа
ObjectMapper mapper = new YAMLMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Map<String, Object> result = mapper.readValue(sourceYaml, new TypeReference<Map<String, Object>>() {});
Ошибка
com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.MarkedYAMLException: while parsing a block mapping
in 'reader', line 4, column 3:
description: "Example of bad YAML")
^
expected <block end>, but found '<scalar>'
in 'reader', line 4, column 37:
description: "Example of bad YAML")
^
at [Source: (File); line: 4, column: 37]