2025-02-27 05:00:14

YAML多行阵列

在YAML中,您可以轻松地创建多行字符串。但是,我希望能够使用|字符创建一个多行数组(主要是为了配置文件中的可读性)。

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中?


以下是可行的:

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

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


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']

你试过这个吗?

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

我得到这个({:“名字”= >“杰克”,“年龄”= > 32},{“名字”= >“Claudia”,“年龄”= > 25}](我使用YAML Ruby类)。


下面的工作对我来说,从可读性的角度来看,当数组元素值的数量很小时:

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

这已经被测试用于snakeyaml和ruame .yaml。


如果你需要的是数组的数组,你可以这样做:

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