我正在尝试从纯Java字符串创建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中删除第一行,但是我想知道解决方案,甚至是问题的原因。
谢谢
没问题,如果将单个字符串转储到YAML文件中,库可以通过多种方式进行转储。在这里,它使用字块缩进指示器在文字字块模式下执行此操作。您自己请求了块样式(DumperOptions.FlowStyle.BLOCK
),因此块指示符(|
)必须存在,但是缩进指示符可能是必需的,也可能不是必需的。
“ YAML文件的其余部分很好”只是因为那是您的单个Java字符串以两个空格缩进。
如果字符串以空格开头和/或字符串中包含特殊字符(例如换行符),则YAML发射器需要做一些特殊的事情。他们可以使用引号(单引号或双引号)或还原为块文字(使用|
)。如果字符串标量以一个或多个空格开头,则块字面量必须有数字来表示缩进级别,否则,将从第一行计算出太大的缩进级别。通常,在对字符串进行分析后并根据上下文决定使用什么(使用带引号或不带引号的普通样式或块样式)。在您的情况下,您可以强制其阻止样式。
您可以通过2
从字符串中删除任何前导空格来从第一行中获取,但是要摆脱|
,您可能需要一个不带换行符的字符串并删除BLOCK流样式的设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句