如何解决如何使用java展平动态yaml文件
我想将使用 java 的动态 yaml 文件解析为 HashMap 并使用点语法(即“a.b.d”)访问它们
给定以下示例.yml:
---
a:
b:
c: "Hello,World"
d: 600
并且可以获取它
outPutMap.get("a.b.d");
Results:
600
知道我们如何实现这一目标吗?
解决方法
正如 Thorbjørn 在评论中所说,HashMap 可能不是表示 YAML 文件的正确数据结构。
您应该尝试查看 tree structures。
也许是这样的:
public class Node {
private final String name;
private final Object value;
private final Node parent;
private final Collection<Node> children = new ArrayList<Node>();
public Node(Node parent,String name) {
this.parent = parent;
this.name = name;
}
public Node getParent() {
return this.parent;
}
public String getName() {
return this.name;
}
public Collection<Node> getChildren() {
return this.children;
}
public void addChild(Node child) {
child.parent = this;
children.add(child);
}
}
然后您只需逐行解析 YAML 文件并构建节点,将所有从属节点添加为最近父节点的子节点。
最终您将拥有一个填充的树结构,从顶部的 Node
开始,一直到树中的每个 Node
。
然后,您可以编写一个方法来解析您想要的点语法中的字符串,然后相应地在树结构中导航以找到想要的 Node
。
请注意,将值存储为 Object
不是一个好主意,您应该实现某种值包装器,如 NumberValue(将值存储为 double
)和 StringValue(即将值存储为 String
),这样您就不必将 Object
转换为不同的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。