是否可以在 YAML 文件的根部分中有一个列表?到目前为止,我还没有看到遵循这种结构的文件,我一直在问自己它是否违反了语法。
下面是一个例子:
- 'entry A'
- 'entry B'
- 'entry C'
Run Code Online (Sandbox Code Playgroud)
到目前为止我所看到的:
list:
- 'entry A'
- 'entry B'
- 'entry C'
Run Code Online (Sandbox Code Playgroud)
换句话说,该list:部分是否已过时?
可以这样做。
这是一个使用snakeYaml的java示例:
org.yaml.snakeyaml.Yaml yaml = new org.yaml.snakeyaml.Yaml();
Object o = yaml.load("- 'entry A'\n- 'entry B'\n- 'entry C'");
System.out.println(o.getClass().getName());
Run Code Online (Sandbox Code Playgroud)
代码的输出是:
java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)
但在实际场景中,我们将对象内容存储到 yaml 文件中。当我们这样做时,如果一个文件的类型是 List,我们实际上像你总是看到的那样存储:
'field name':
- item1
- item2
Run Code Online (Sandbox Code Playgroud)
不,标量list并没有过时,它定义了一个完全不同的结构。
YAML 文件由映射、序列和标量组成。
在顶层,您可以有一个(单个)标量(诚然这不是很灵活):
Hello world
Run Code Online (Sandbox Code Playgroud)
或映射:
abc:
- 1
- 2
Run Code Online (Sandbox Code Playgroud)
或 aa 列表:
- 1
- 2
Run Code Online (Sandbox Code Playgroud)
你的第一个例子在顶层有一个由标量组成的序列,你的第二个例子在顶层有一个带有单个键值对的映射。键是标量list,值是标量序列。