YAMLマルチライン配列


140

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で複数行配列を実現する方法はありますか?


正直なところ、複数行の配列とは何ですか?いつそれが意味を持つべきでしょうか?むしろあなたのコードだけのルックスより
OK999

すべてのオプションを一度に1つの画面で表示するのではなく、画面を水平方向にスクロールしてすべてのオプションを表示する必要があります。
神保

回答:


240

YAMLの配列は、 あるアレイ。だからこれはそれを表現する正しい方法です:

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

これは以下と同じ意味です。

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

1行の配列を複数の行に分割することもできます。

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

また、単一行配列に複数行の文字列があります。

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

1
文字列が-で始まる場合は問題ですか(例:コマンドラインで渡されるオプション)?その後、引用する必要がありますか?`-" -myarg "`?
ekkis 2017年

2
それは、YAMLの解析に使用しているプログラムに完全に依存します。この質問は、YAML仕様に関するものです。
スティーブベネット

39

これを試しましたか?

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

これを取得します[{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}]YAMLRubyクラスを使用します)。


6

以下は機能します:

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

snakeyaml実装を使用してテストしましたが、他の実装についてはわかりません。


2
Puppet Enterprise 3.7 hiera yaml(Ruby yaml)で動作しました。rubyyamlも非常にデリケートであることがわかり、タブの使用を避けます。最初の行である場合、上記の例では、スペースの同じ数をidented二行のようでなければならないのでmyarray: [String1, String2, String3,、2行目は`String4、String5、String5、String7ある]`
ワリド

2

配列要素の値が小さい場合の読みやすさの観点から見た私とその良さのための次の作品:

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

注:snakeyaml実装を使用


0

必要なものが配列の配列である場合は、次の方法で行うことができます。

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

Viniciusに感謝しますが、質問には明確に述べられています。「複数行配列の複数行ではなく、「複数行配列を作成する機能が欲しいのですが」。
神保
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.