SnakeYaml转储函数用单引号写入

时间:2017-10-24 14:25:02

标签: java yaml snakeyaml

请考虑以下代码:

public void testDumpWriter() {
Map<String, Object> data = new HashMap<String, Object>();
data.put("NAME1", "Raj");
data.put("NAME2", "Kumar");

Yaml yaml = new Yaml();
FileWriter writer = new FileWriter("/path/to/file.yaml");
for (Map.Entry m : data.entrySet()) {
            String temp = new StringBuilder().append(m.getKey()).append(": ").append(m.getValue()).toString();
            yaml.dump(temp, file);
        }
}

上述代码的输出是

'NAME1: Raj'
'NAME2: Kumar'

但我希望输出没有单引号,如

NAME1: Raj
NAME2: Kumar

解析文件非常方便。 如果有人有解决方案,请帮我解决。提前致谢

1 个答案:

答案 0 :(得分:0)

SnakeYaml完全按照您的说法执行操作:对于Map中的每个条目,它会转储键的串联,字符串": "和值作为YAML文档。字符串映射到YAML中的标量,并且由于标量包含:后跟空格,因此必须引用它(否则它将是键值对)。

实际想要做的是将地图转储为YAML映射。你可以这样做:

public void testDumpWriter() {
    Map<String, Object> data = new HashMap<String, Object>();
    data.put("NAME1", "Raj");
    data.put("NAME2", "Kumar");

    DumperOptions options = new DumperOptions();
    options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
    Yaml yaml = new Yaml(options);
    FileWriter writer = new FileWriter("/path/to/file.yaml");
    yaml.dump(data, writer);
}