1
我想使用snakeyaml将下面的YAML deserilise放入下面的域模型中,但是我一直在收到java.lang.ClassCastException:java.util.LinkedHashMap无法转换为ConfigurableThing。包含对象列表的SnakeYaml Deserialise类
注意我能够成功反序列化一个ConfigurableThing,它只有在试图反序列化我遇到问题的ConfigurableThings列表时。
守则deserialise
File file = new File(classLoader.getResource("config.yml").getFile());
try(InputStream in = new FileInputStream(file)){
Yaml yaml = new Yaml();
Configuration config = yaml.loadAs(in,Configuration.class);
}
YAML
things:
- type: TYPE1
name: foo
value: 2.00
- type: TYPE2
name: bar
value 8.00
型号
public final class Config {
private List<ConfigurableThing> things;
//Getter and Setter
}
public final class ConfigurableThing {
private Type type;
private String name;
private BigDecimal value;
//Getters and Setters
}
public enum Type {
TYPE1,TYPE2
}
完美,谢谢!对于后人,我添加了我使用的不正确的代码加载YAML。 –
即使有人拒绝,编辑建议也是正确的。 'addTypeDescription'是正确的名称; SnakeYaml文档使用'addTypeDefinition'这是错误的。 – flyx
它的工作原理,但只是增加了几行,这说明了最后一行发生了什么:File file = new File(“configuration.yaml”); InputStream in = new FileInputStream(file); Config list =(Config)yaml.load(in); –