Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java YAML自定义对象_Java_Yaml_Snakeyaml - Fatal编程技术网

Java 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

我有一个简单的YAML文档:

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。有关更多信息,请参阅