java使用yamlbeans反序列化嵌套类
我正在使用yamlbeans将yaml文件反序列化为Java对象。只要我只有一门课,这个就行。问题是,当我想嵌套一个字段时,我必须在yaml描述中指定嵌套的类
单类示例:
爪哇:
public class MessageField {
public String name;
public String type;
public int length;
public String comment;
}
亚马尔:
name: field1
type: int
length: 4
comment: first field
---
name: field2
type: string
length: 16
comment: second field
---
多个类(yaml文件中需要!com.mylib.VariableField)
爪哇:
public class MessageField {
public String name;
public String type;
public int length;
public String comment;
public List<VariableField> variableFields;
}
public class VariableField extends MessageField{
public int id;
}
亚马尔:
name: field3
type: short
length: 2
comment:
variableFields:
- !com.mylib.VariableField
id: 1
name: nestedField 1
type: string
length: -1
comment:
---
yaml文档页面描述了如何在读取类时通过指定类型来反序列化类,这是我为顶级类所做的:
YamlReader reader = new YamlReader(new FileReader("sample.yml"));
MessageField mf = reader.read(MessageField.class);
这正确地解析了顶级类的字段,但不允许我避免!通用域名格式。mylib。我的嵌套类的VariableField标识符。我试图找出是否有任何方法可以更改Java代码,从而使yaml文件不需要知道类名
# 1 楼答案
我相信你要找的是
它为基于集合的字段设置默认元素类型。类似地,
setPropertyDefaultType
方法可用于指定字段本身的默认类型如果为YamlReader指定了默认字段/元素类型,则不需要再在yaml文件中包含类名(尽管包含的任何类型名都将覆盖这些默认值)。此外,如果为YamlWriter定义了默认类型,多余的类名将不会写入yaml文件