我的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的类型不同。
  • 是否存在将ArrayList<Object>转换为我错过的Double[]的可接受方法?
  • 如何配置Snakeyaml将所有数字加载为双精度?


  • 附加信息

    使用的Snakeyaml版本是1.17。

    我这样创建Snakeyaml实例:
    private Yaml createYamlInstance() {
        DumperOptions dumperOptions = new DumperOptions();
        dumperOptions.setDefaultFlowStyle(FlowStyle.AUTO);
        return new Yaml(dumperOptions);
    }
    

    编辑

    我看过documentation,但是看不到example中默认的隐式类型如何更改。

    最佳答案

    根据此文档,数字解析是通过以下格式完成的:

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

    也许将0更改为0.00就足够了。

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

    07-26 03:12