【发布时间】:2012-02-27 20:29:32
【问题描述】:
我正在使用 yamlbeans 将 yaml 文件反序列化为 Java 对象。只要我只有一堂课,这很好。问题是当我想嵌套一个字段时,我不得不在 yaml 描述中指定嵌套类。
单类示例:
Java:
public class MessageField {
public String name;
public String type;
public int length;
public String comment;
}
yaml:
name: field1
type: int
length: 4
comment: first field
---
name: field2
type: string
length: 16
comment: second field
---
多个类(在 yaml 文件中需要 !com.mylib.VariableField)
Java:
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;
}
yaml:
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);
这会正确解析顶级类的字段,但不允许我避免嵌套类的 !com.mylib.VariableField 标识符。我试图弄清楚是否有任何方法可以更改 Java 代码,以便不需要 yaml 文件知道类名。
【问题讨论】:
标签: java serialization configuration yaml