YAML多线阵列

时间:2014-05-14 14:09:29

标签: yaml

YAML中,您可以轻松创建multi-line strings。但是,我希望能够使用|字符创建多行数组(主要用于配置文件中的可读性)。

YAML 数组可以表示为:['key1', 'key2', 'key3']

YAML 序列使用短划线,后跟空格,然后是字符串:

- String1
- String2
- String3

这将评估为:['string1', 'string2', 'string3']

YAML 映射是我们在YAML中始终看到的键和值对的数组:

Key1: string1
Key2: string2
Key3: string3

这一切都很好,但我不能为我的生活看到如何做一个多线阵列。像这样:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

如果没有在YAML中创建多个数组映射并使用我选择的编程语言将它们合并,有没有办法实现多行数组,可能像Python一样{ }但是在YAML中?

5 个答案:

答案 0 :(得分:143)

YAML 序列 数组。所以这是表达它的正确方法:

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

这与意义相同:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

将单行数组分成几行也是合法的:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

甚至在单行数组中有多行字符串:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']

答案 1 :(得分:6)

您尝试过吗?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

我得到这个:[{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}](我使用YAML Ruby类)。

答案 2 :(得分:4)

以下方法可行:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

我使用snakeyaml实现测试它,但我不确定其他实现。

答案 3 :(得分:0)

在数组元素值较小时,从可读性的角度来看,对我来说很有意义,并且很好:

key: [string1, string2, string3, string4, string5, string6]

注意:使用了snakeyaml实现

答案 4 :(得分:0)

如果您需要的是一个数组数组,则可以这样做:

key:
  - [ 'value11', 'value12', 'value13' ]
  - [ 'value21', 'value22', 'value23' ]