gpt4 book ai didi

java - YAML 自定义对象

转载 作者:行者123 更新时间:2023-12-01 09:07:59 26 4
gpt4 key购买 nike

我有简单的 YAML 文档:

object:
a: 1
b: 2
c: 3

我可以将此属性读取到自定义对象吗,该对象包含仅带有 1 个参数的构造函数。例如

public class CustomObject {
private String value;

public CustomObject(String value) {
....
}

getValue ...
setValue ...
}

其中 value 是属性 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);
}
}
}

你可以像这样使用它:

Yaml yaml = new Yaml(new CustomObjectConstructor());
CustomObject myObject =
(CustomObject) yaml.load("!customObject\na: 1\nb: 2\nc: 3");

当然,这需要针对处理错误情况进行细化,但它显示了总体思路。要将对象转储为映射,您可以定义一个类似于此处代码的表示者。请参阅documentation了解更多信息。

关于java - YAML 自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com