YAML多线阵列

Jim*_*mbo 114 yaml

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

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

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

- String1
- String2
- String3
Run Code Online (Sandbox Code Playgroud)

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

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

Key1: string1
Key2: string2
Key3: string3
Run Code Online (Sandbox Code Playgroud)

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

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ett 193

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

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6
Run Code Online (Sandbox Code Playgroud)

这与意义相同:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']
Run Code Online (Sandbox Code Playgroud)

将单行数组拆分为多行也是合法的:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']
Run Code Online (Sandbox Code Playgroud)

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

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']
Run Code Online (Sandbox Code Playgroud)

  • 如果字符串以 - 开头(例如在命令行中传递的选项),这是一个问题吗?那么我必须引用吗?` - “-myarg”`? (2认同)
  • 这完全取决于你用来解析YAML的程序.这个问题只是关于YAML规范. (2认同)

Iwa*_* B. 24

你尝试过这个吗?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25
Run Code Online (Sandbox Code Playgroud)

我明白了:([{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}]我使用YAMLRuby类)。


Vin*_*ius 7

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

key:
  - [ 'value11', 'value12', 'value13' ]
  - [ 'value21', 'value22', 'value23' ]
Run Code Online (Sandbox Code Playgroud)

  • 没有意识到这个问题不完全是我的,但就是为了这个 - 感谢@Vinicius (4认同)

Yee*_*Yee 6

以下将起作用:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]
Run Code Online (Sandbox Code Playgroud)

我使用snakeyaml实现对其进行了测试,但是我不确定其他实现。

  • 它与Puppet Enterprise 3.7 hiera yaml(Ruby yaml)一起使用时,我发现ruby yaml也是非常敏感的,它的标识也很重要,避免使用制表符。因此,上面的示例应该像在两行中标识了相同数量的空格一样,其中第一行是`myarray:[String1,String2,String3,`,第二行是`String4,String5,String5,String7]` (2认同)

Har*_*ler 5

以下内容对我有用,并且当数组元素值的数量很少时,从可读性的角度来看它很好:

key: [string1, string2, string3, string4, string5, string6]
Run Code Online (Sandbox Code Playgroud)

snakeyaml这已经过测试可以与和 一起使用ruamel.yaml