Я пытался использовать SnakeYaml для создания карты строки и объектов в Java.SnakeYaml - ClassCastException при десериализации в карту строки и настраиваемых объектов
Существует Person.java класс для хранения информации о человеке. Я хотел, чтобы прочитать информацию о каждом человеке из файла YAML и хранить его в карте с ключом будет именем людей и значения быть объектом Person. т.е. Для каждого имени человека должен быть создан и добавлен объект на карту.
EDIT: YAML десериализация должен создать Map<String, Person>
Ниже содержимое каждого файла:
YAML файл:
PersonName1:
value1: foo1
value2: bar1
value3: foobar1
PersonName2:
value1: foo2
value2: bar2
value3: foobar2
Person.java
public class Person {
public String value1;
public String value2;
public String value3;
}
Main.java
public class Main {
public static void main(String[] args) throws FileNotFoundException {
InputStream inputStream = new FileInputStream(new File("SampleYamlFile.yml"));
Yaml yaml = new Yaml();
Map<String, Person> persons = (Map<String, Person>) yaml.load(inputStream);
for(String key : persons.keySet()) {
System.out.println("key = " + key);
Person person = persons.get(key);
System.out.println("person = " + person);
}
}
}
карта будет создаваться без каких-либо ошибок. Ключ также печатается. Но когда я пытаюсь получить доступ к значению ключа, я получаю ClassCastException
java.lang.ClassCastException: java.util.LinkedHashMap не может быть брошен для лица
ли это тип десериализации, не поддерживаемый SnakeYaml? Любая помощь, почему эта проблема возникает и как эта проблема может быть решена, очень ценится.
Да, это правильно, это получить декодируется-х таким образом. Но я хотел, чтобы он был создан как Map вместо Map >. Я добавлю это явным образом в своем вопросе. –
Balasubramanian
Я отредактировал мой ответ, я добавил ссылку, которая могла бы помочь вам – ToYonos