我正在尝试从纯java String创建一个yaml文件。但是,我创建的yaml文件的初始行为:
|2
其余的yaml文件很好,但第一行非常有趣。 我的DumperOptions如下;
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml yaml = new Yaml(options);
// Build the complex String here.
String dump = yaml.dump(builder.toString());
是的,我可以直接从StringBuilder中删除初始行,但我想知道解决方案甚至是问题的原因。
由于
答案 0 :(得分:1)
没有问题,如果您将单个字符串转储到YAML文件,则库可以通过多种方式执行此操作。这里使用block indention indicator在文字块模式下执行此操作。您自己请求了块样式(DumperOptions.FlowStyle.BLOCK
),因此块指示符(|
)必须存在,但缩进指示符可能是必需的,也可能不是。
“YAML文件的其余部分很好”只是因为这是你的单个Java字符串缩进两个空格。
如果字符串以空格开头和/或字符串中有特殊字符(例如换行符),则YAML发射器需要执行一些特殊操作。他们可以使用引号(单引号或双引号)或恢复为阻止文字(使用|
)。如果字符串标量以一个或多个空格开头,则块文字需要有数字来指示缩进级别,否则将从第一行计算太大的缩进级别。通常,在分析字符串并根据上下文后,决定使用什么(带或不带引号或块样式的简单样式)。在您的情况下,您强制它阻止样式。
您可以通过从字符串中删除任何前导空格来从第一行获取2
,但是为了摆脱|
,您可能需要一个没有换行符的字符串,删除BLOCK流样式的设置。