首页 > 解决方案 > 使用 SnakeYAML 将包含一些代码的文本转储到 yaml 文档

问题描述

我正在尝试使用 SnakeYAML 将包含一些代码的文本以及 TAB (\t) 转储到 yaml 文件中。

当我 yaml.load() 这个 yaml 文件时,一切都按预期发生。

文件.yaml

local: | begin if P_MESSAGE = 'DEFAULT' then P_FILE.[SRC_TYPE] := true; end;

测试.js

Yaml yaml = new Yaml(options);

Map<String, Object> test = yaml.load(new FileInputStream(new File("file.yaml"));

System.out.println(test);

输出:

{local=begin if P_MESSAGE = 'DEFAULT' then P_FILE.[SRC_TYPE] := true; end;}

但是当我尝试将此字符串转储回文件时

测试.js

...
Map<String, Object> test = yaml.load(new FileInputStream(new File("file.yaml"));

String out = yaml.dump(test);
System.out.println(out);

我有这个:

输出

"local": "begin\n if P_MESSAGE = 'DEFAULT' then\n\t\tP_FILE.[SRC_TYPE] := true;\n\ end;

我想用原始格式标量取回它,就像在第一个块中一样。例如,我希望 \t 成为真正的标签。有人有提示吗?

设置:

options.setDefaultFlowStyle(DumperOptions.FlowStyle.AUTO); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.LITERAL);

标签: javasnakeyaml

解决方案


推荐阅读