gpt4 book ai didi

java - 从 YAML 文件中获取 Integer[] 而不是 ArrayList

转载 作者:行者123 更新时间:2023-12-02 03:06:21 26 4
gpt4 key购买 nike

我正在解析 YAML 文件

Props:
Prop1 : [10, 22, 20]
Prop2 : [20, 42, 60]

这给了我Map<String, Map<String, ArrayList<Integer>>>我想要 Map<String, Map<String, Integer[]>>我不想转换List<Integer> to Integer[]在读取文件的代码中。我可以更改 YAML 文件中的某些内容吗?

最佳答案

与我的其他答案相反,这个答案侧重于更改 YAML 文件。但是,您还需要添加一些 Java 代码来告诉 SnakeYaml 如何加载您使用的标签。

您可以向 YAML 序列添加标签:

Props:
Prop1 : !intarr [10, 22, 20]
Prop2 : !intarr [20, 42, 60]

加载前需要向 SnakeYaml 注册:

public class MyConstructor extends Constructor {
public MyConstructor() {
this.yamlConstructors.put(new Tag("!intarr"),
new ConstructIntegerArray());
}

private class ConstructIntegerArray extends AbstractConstruct {
public Object construct(Node node) {
final List<Object> raw = constructSequence(node);
final Integer[] result = new Integer[raw.size()];
for(int i = 0; i < raw.size(); i++) {
result[i] = (Integer) raw.get(i);
}
return result;
}
}
}

你可以像这样使用它:

Yaml yaml = new Yaml(new MyConstructor());
Map<String, Map<String, Integer[]>> content =
(Map<String, Map<String, Integer[]>>) yaml.load(myInput);

关于java - 从 YAML 文件中获取 Integer[] 而不是 ArrayList<Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685167/

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