我试图使用 SnakeYaml 在 Java 中创建字符串和对象的映射。
有一个Person.java类用于存储有关人员的信息。我想从 yaml 文件中读取每个人的信息,并将其存储在地图中,键是人名,值是Person 对象。IE。对于每个人名,必须创建一个人对象并将其添加到地图中。
编辑: YAML 反序列化应该创建一个Map<String, Person>
以下是每个文件的内容:
YAML 文件:
PersonName1:
value1: foo1
value2: bar1
value3: foobar1
PersonName2:
value1: foo2
value2: bar2
value3: foobar2
人.java
public class Person {
public String value1;
public String value2;
public String value3;
}
主.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 无法转换为 Person
SnakeYaml 不支持这种类型的反序列化吗?非常感谢您对为什么会出现此问题以及如何解决此问题提供任何帮助。