yamlファイルをJavaオブジェクトに逆直列化するためにyamlbeansを使用しています。私はクラスが1つしかない限り、これはうまく動作します。問題は、フィールドをネストしたいときに、yaml記述にネストされたクラスを指定することです。yamlbeansを使用してネストされたクラスを非直列化する
シングルクラス例:
の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:
YamlReader reader = new YamlReader(new FileReader("sample.yml"));
MessageField mf = reader.read(MessageField.class);
:
name: field3
type: short
length: 2
comment:
variableFields:
- !com.mylib.VariableField
id: 1
name: nestedField 1
type: string
length: -1
comment:
---
のYAMLドキュメントページは、私は私のトップレベルのクラスのために何をすべきかであるクラスを、読むときのタイプを指定してクラスを逆シリアル化する方法について説明しますこれは、トップレベルクラスのフィールドを正しく解析しますが、ネストされたクラスの!com.mylib.VariableField識別子を避けることはできません。私はyamlファイルがクラス名を知る必要がないようにJavaコードを変更する方法があるかどうかを調べようとしています。
ありがとう、バットマン。それは完璧に働いた。 –
バットマン、あなたは英雄です:D – pokeRex110