YAML:是否可以在根部分中列出一个列表?

时间:2016-04-16 10:53:47

标签: file yaml

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

以下是一个例子:

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

到目前为止我所看到的:

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

换句话说,list:部分是否已过时?

2 个答案:

答案 0 :(得分:4)

可以这样做。
这是一个使用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());

代码的输出是:

java.util.ArrayList

但在实际情况中,我们将对象内容存储到yaml文件中。当我们这样做时,如果一个字段的类型是List,我们实际上就像你一直看到的那样存储:

'field name':
- item1
- item2

答案 1 :(得分:3)

标量list没有过时,它定义了一个完全不同的结构。

YAML文件包含映射序列标量

  • 映射由键值对组成。密钥可以是标量或列表;值可以是映射,序列或标量。
  • 列表由元素组成,每个元素可以是映射,序列或标量
  • 标量原则上是一个字符串,但某些字符串可以被特殊解释(仅限数字 - >整数," False" - >布尔值等)

在顶级你可以有一个(单个)标量(诚然这不是很灵活):

Hello world

或映射:

abc: 
  - 1
  - 2

或列表:

- 1
- 2  

你的第一个例子在顶层有一个由标量组成的序列,你的第二个例子在顶层有一个带有单个键值对的映射。关键是标量list和值是一系列标量。

相关问题