yaml - 将列表包装在多行 yaml 上

标签 yaml

在 YAML 中,我知道可以像这样将一个字符串包装在多行上:

my_string: this is my very very very very very reeeeeeeally quite long string

相当于:
my_string:> 
       this is my very very very very
       very reeeeeeeally quite long string

是否可以用列表做同样的事情?就像是:
[my, very, long, list, that, is, waaaaaaaaaaaaaaay, tooooo, long]

写成:
my_list:>
     [my, very, long, 
     list, that, is, 
     waaaaaaaaaaaaaaay, tooooo, long]

但是分成多行,文档没有具体说明。当我在加载 YAML 文件时尝试以上述方式执行此操作时,出现错误:
yaml.scanner.ScannerError: mapping values are not allowed here

最佳答案

你所拥有的是一个 "Flow sequence"并且没有要求将它放在一条线上。但是,您确实希望相对于它所属的(映射)键保持缩进(尽管一些解析器放宽了此要求):

my_list: [my, very, long, 
         list, that, is, 
         waaaaaaaaaaaaaaay, tooooo, long]

或者,您可以决定使用 block style sequence ,但由于每个序列元素 灵活性较差有 独立于自己的行:
my_list:
- my
- very
- long
- list
- that
- is
- waaaaaaaaaaaaaaay
- tooooo
- long

在这种情况下,您可以但不必在相对于映射键 ( - ) 的列表元素之前缩进短划线 ( my_list )

您收到错误 mapping values are not allowed here很可能是因为您确实在
my_list:>
     [my, very, long, 
     list, that, is, 
     waaaaaaaaaaaaaaay, tooooo, long]
xyz: 123

你在上面的错误 online parsers .原因是,因为冒号后面没有空格,my_list永远不是映射的键,而是多行标量(字符串)的开头,嵌入的换行符转换为间隔,即 ends with long] .它本质上相当于写:
"my_list:> [my, very, long, list, that, is, waaaaaaaaaaaaaaay, tooooo, long]"

因为缺少冒号后的空格。

关于yaml - 将列表包装在多行 yaml 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31839686/

相关文章:

ruby - 使用方法参数引用 YAML 节点

java - Jackson yaml 库无法解析有效的 yaml 文件

python - 如何在文件中写入 YAML 格式的数据?

python - 更改 yaml 文件中的 <TEST> python

azure - 如何从azure devops yaml管道中的工件中查找runID

java - Spring 启动 : how to use multiple yml files

php - 模块化 Zend Framework 应用程序和 Doctrine 集成和使用

node.js - 如何在 Swagger 中编写此正则表达式模式?

ruby - 从 yaml 文件中读取数据并在 ruby​​ 中生成一个数组

amazon-web-services - 如何转义 AWS CloudFormation YAML 模板中的策略变量