如何在snakeyaml中更改隐式类型(int到double)

时间:2017-08-17 16:41:58

标签: java yaml snakeyaml

我的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,因为IntegerDouble的类型不同。

  1. 我错过了将ArrayList<Object>转换为Double[]的可接受方式吗?
  2. 如何配置Snakeyaml以将所有数字加载为双打?
  3. 其他信息

    使用的Snakeyaml版本是1.17。

    我像这样创建Snakeyaml实例:

    private Yaml createYamlInstance() {
        DumperOptions dumperOptions = new DumperOptions();
        dumperOptions.setDefaultFlowStyle(FlowStyle.AUTO);
        return new Yaml(dumperOptions);
    }
    

    修改

    我查看了documentation,但我无法看到example中默认的隐式类型是如何更改的。

2 个答案:

答案 0 :(得分:1)

根据此文档,数字解析按格式完成:

http://symfony.com/doc/current/components/yaml/yaml_format.html#numbers

将0改为0.00就足够了。

或者,如果无法更改格式,也许您可​​以在解析文档后使用之前转换ArrayList成员吗?

答案 1 :(得分:1)

您可以删除INT implicit Resolver

然后FLOAT隐式解析器将完成这项工作。