В настоящее время я пытаюсь проанализировать файл YAML в качестве ввода/конфигурации для запуска некоторых тестов. Проблема в том, что при использовании Джексона данные вложения, похоже, не вписываются в класс, независимо от структуры, которую я для него разрабатываю, почти каждый раз, когда я получаю что-то вроде этого:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token
Я намерен просто «искать» данные в файле YAML, используя аналогичный подход XPath, не беспокоясь о сопоставлении объектов и конечных уровнях вложенности.
Вот пример класса:
public class YAMLInput {
private ArrayList<SomeContainer> containers;
//getter and setters
private class SomeContainer {
private String name;
private String path;
private ArrayList<Integer> intList;
private ArrayList<String> strList;
private ArrayList<SomeObject> someObjList;
private class SomeObject {
private String objectName;
private ArrayList<String> strList;
}
}
}
И ввод Yaml:
container:
name: Cont1
path: /storage/outputFolder
intList:
- 100
- 200
- 300
strList:
- strFirst
- strSecond
- strThird
someObjList:
obj1:
objName: strname
strList:
- 100
- 200
- 300
obj2:
# (...)
Идея состоит в том, чтобы построить конструктор для класса YAMLInput
:
public YAMLInput( SearchableYAMLData data) {
for(SearchableYAMLData container : data.getList("container")){
this.containers.add( new SomeContainer());
this.containers.get(0) = container.get("name");
//...
}
}
Какой инструмент будет ближе всего к этому гипотетическому классу SearchableYAMLData
?