YAMLでハッシュの入れ子を作りたい時
先日CircleCIの設定ファイルを書いていたとき、思うように読み取ってくれず詰まったのでメモ。
YAMLのインデントは、ファイルの中で統一されてさえいれば任意の数で良いのだが、一つ意識しなければいけない場合がある。
下のようなyamlを書くと連想配列とみなされ、 yaml
と Hello
が並列のキーとして扱われてしまう。
- yaml: Hello: "Hi"
[ { "yaml": null, "Hello": "Hi" } ]
自分がやりたかったのは {"Hello": "Hi"}
をyaml
の値にすることだった。
このように、リストの中にあるハッシュのキーに対し、さらにハッシュを値として持たせたい場合は、以下のようにもうひとつ深いインデントをつける必要がある。
- yaml: Hello: "Hi"
[ { "yaml": { "Hello": "Hi" } } ]
特にサービスの設定ファイルなどではネストが深いデータ構造を書かされることが多いので、覚えておくと良い。