YAML:根部分是否可以有一个列表?

16

在YAML文件的根部分中是否可能有列表呢? 到目前为止,我还没有看到遵循这种结构的文件,并且一直在问自己它是否违反了语法规则。

以下是一个示例:

- 'entry A'
- 'entry B'
- 'entry C'

我目前看到的:

list:
  - 'entry A'
  - 'entry B'
  - 'entry C'

换句话说,list: 部分已经过时了吗?

2个回答

10

这样做是可以的。
这里有一个使用snakeYaml的Java示例:

Yaml yaml = new Yaml();
Object o = yaml.load("- 'entry A'\n- 'entry B'\n- 'entry C'");
System.out.println(o.getClass().getName());

代码的输出是java.util.ArrayList
但在实际场景中,我们将对象内容存储到 YAML 文件中。当这样做时,如果一个字段的类型是列表,则实际上我们会按照您常见的方式进行存储:
field-name:
- item1
- item2

7
不,标量list不会过时,它定义了一个完全不同的结构。
YAML文件由映射序列标量组成。
  • 一个映射由键值对组成。键可以是标量或列表;值可以是映射、序列或标量。
  • 一个列表由元素组成,每个元素可以是映射、序列或标量。
  • 标量原则上是一个字符串,但某些字符串可以被特殊解释(仅限数字->整数、"False" ->布尔值等)。
在顶层,您可以有一个(单一的)标量(诚然,这不是非常灵活)。
Hello world

或者一个映射:
abc: 
  - 1
  - 2

或者一个列表:
- 1
- 2  

您的第一个示例在顶层具有由标量组成的序列,您的第二个示例在顶层具有包含单个键值对的映射。键是标量list,值是一系列标量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接