有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SnakeYaml从字符串第一行转储

我试图从纯java字符串创建一个yaml文件。但是,我创建的yaml文件的初始行是:

|2

yaml文件的其余部分很好,但第一行非常有趣。 我的选择如下

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中删除初始行,但我想知道解决方案,甚至是问题的原因

谢谢


共 (1) 个答案

  1. # 1 楼答案

    没有问题,如果您将单个字符串转储到YAML文件中,库可以通过多种方式执行此操作。在这里,它使用block indention indicator以文本块模式执行。您自己请求了块样式(DumperOptions.FlowStyle.BLOCK),因此块指示符(|)必须在那里,但是缩进指示符可能是必要的,也可能不是

    “YAML文件的其余部分很好”只是因为这是由两个空格缩进的单个Java字符串

    如果字符串以空格开头和/或字符串中有特殊字符(例如换行符),YAML发射器需要执行一些特殊操作。它们可以使用引号(单引号或双引号)或还原为块文本(使用^{)。如果字符串标量以一个或多个空格开头,则块文本需要有数字来指示缩进级别,否则将从第一行计算太大的缩进级别。通常,在分析字符串后,根据上下文决定使用什么(带引号或不带引号的普通样式或块样式)。在你的例子中,你可以强制它使用块样式

    通过从字符串中去掉任何前导空格,您可能可以从第一行获得2,但是要去掉|,您可能需要一个没有换行符的字符串,并删除块流样式的设置