我的yaml文档与seq: [0, 0.23, 0.45, 0.67]
Snakeyaml将yaml序列解析为ArrayList,其值为:
[0]: 0 (Integer)
[1]: 0.23 (Double)
[2]: 0.45 (Double)
[3]: 0.67 (Double)
我需要将所有这些值设置为Double
类型,以便使用Double[]
将列表转换为list.toArray(new Double[])
- 否则会抛出ArrayStoreException
,因为Integer
与Double
的类型不同。
ArrayList<Object>
转换为Double[]
的可接受方式吗?使用的Snakeyaml版本是1.17。
我像这样创建Snakeyaml实例:
private Yaml createYamlInstance() {
DumperOptions dumperOptions = new DumperOptions();
dumperOptions.setDefaultFlowStyle(FlowStyle.AUTO);
return new Yaml(dumperOptions);
}
我查看了documentation,但我无法看到example中默认的隐式类型是如何更改的。
答案 0 :(得分:1)
根据此文档,数字解析按格式完成:
http://symfony.com/doc/current/components/yaml/yaml_format.html#numbers
将0改为0.00就足够了。
或者,如果无法更改格式,也许您可以在解析文档后使用之前转换ArrayList成员吗?
答案 1 :(得分:1)
您可以删除INT implicit Resolver。
然后FLOAT隐式解析器将完成这项工作。