りんごとバナナとエンジニア

エンジニア修行の記録

YAMLでハッシュの入れ子を作りたい時

先日CircleCIの設定ファイルを書いていたとき、思うように読み取ってくれず詰まったのでメモ。

YAMLのインデントは、ファイルの中で統一されてさえいれば任意の数で良いのだが、一つ意識しなければいけない場合がある。
下のようなyamlを書くと連想配列とみなされ、 yamlHello が並列のキーとして扱われてしまう。

- yaml: 
  Hello: "Hi"
[
  {
    "yaml": null, 
    "Hello": "Hi"
  }
]

自分がやりたかったのは {"Hello": "Hi"}yaml の値にすることだった。
このように、リストの中にあるハッシュのキーに対し、さらにハッシュを値として持たせたい場合は、以下のようにもうひとつ深いインデントをつける必要がある。

- yaml: 
    Hello: "Hi"
[
  {
    "yaml": {
      "Hello": "Hi"
    }
  }
]

特にサービスの設定ファイルなどではネストが深いデータ構造を書かされることが多いので、覚えておくと良い。