Java YAML自定义对象
我有一个简单的YAML文档:Java YAML自定义对象,java,yaml,snakeyaml,Java,Yaml,Snakeyaml,我有一个简单的YAML文档: object: a: 1 b: 2 c: 3 我是否可以将此属性读取到自定义对象,该对象仅包含一个带1个参数的构造函数。比如说 public class CustomObject { private String value; public CustomObject(String value) { .... } getValue ... setV
object:
a: 1
b: 2
c: 3
我是否可以将此属性读取到自定义对象,该对象仅包含一个带1个参数的构造函数。比如说
public class CustomObject {
private String value;
public CustomObject(String value) {
....
}
getValue ...
setValue ...
}
其中,值是带掩码的属性连接a、b、c的结果(结果为1:2/3)?这在自定义构造函数和重输入中是可能的:
class CustomObjectConstructor extends Constructor {
public CustomObjectConstructor() {
this.yamlConstructors.put(new Tag("!customObject"), new ConstructCustomObject());
}
private class ConstructCustomObject extends AbstractConstruct {
public Object construct(Node node) {
final Map<Object, Object> values = constructMapping(node);
final String a = (String) values.get("a");
final String b = (String) values.get("b");
final String c = (String) values.get("c");
return new CustomObject(a + ":" + b + "/" + c);
}
}
}
当然,这需要改进以处理错误案例,但它显示了总体思路。要将对象作为映射转储,可以定义与此处代码类似的representer。有关更多信息,请参阅。这可以通过自定义构造函数和重输入实现:
class CustomObjectConstructor extends Constructor {
public CustomObjectConstructor() {
this.yamlConstructors.put(new Tag("!customObject"), new ConstructCustomObject());
}
private class ConstructCustomObject extends AbstractConstruct {
public Object construct(Node node) {
final Map<Object, Object> values = constructMapping(node);
final String a = (String) values.get("a");
final String b = (String) values.get("b");
final String c = (String) values.get("c");
return new CustomObject(a + ":" + b + "/" + c);
}
}
}
当然,这需要改进以处理错误案例,但它显示了总体思路。要将对象作为映射转储,可以定义与此处代码类似的representer。有关更多信息,请参阅