YAMLの基礎文法に関するメモです。
下記の参考サイトをみて自分なりに必要な部分をまとめたものなので、
ちゃんと学びたい方は下記のサイトを参照することをお勧めします。
- シーケンス(配列)
- マッピング(辞書)
- シーケンスを入れ子にする
- マッピングを入れ子にする
- マッピングのシーケンス
- シーケンスのマッピング
- 型
- 改行を含む文字列
- アンカー・エイリアス
- フロースタイルという書き方もある
- 簡単に試すためのサイト
- 参考
シーケンス(配列)
YAMLでは配列のことをシーケンスと呼びます。
シーケンスはハイフン+半角スペースを連続して書くことで表現されます。
# ハイフン+半角スペースを連続して書くとシーケンス - a - b - c
結果をjsonで表すと次のようになります。
[ "a", "b", "c" ]
マッピング(辞書)
YAMLでは辞書のことをマッピングと呼びます。
マッピングは[キー名]: + 半角スペースを連続して書くことで表現されます。
A: a B: b C: c
これをjsonで表すと次のようになります。
{ "A": "a", "B": "b", "C": "c" }
シーケンスを入れ子にする
シーケンスを入れ子にするには次のように書きます。
- a - b - - c - d
これをjsonで表すと次のようになります。
[ "a", "b", [ "c", "d" ] ]
マッピングを入れ子にする
A: a B: b C: 1: c-1 2: c-2
これをjsonで表すと次のようになります。
{ "A": "a", "B": "b", "C": { "1": "c-1", "2": "c-2" } }
マッピングのシーケンス
マッピングのシーケンスは次のように書きます。
- A: a B: b - C: c D: d
これをjsonで表すと次のようになります。
[ { "A": "a", "B": "b" }, { "C": "c", "D": "d" } ]
シーケンスのマッピング
シーケンスマッピングは次のように書きます。
A: - a-1 - a-2 - a-3 B: - b-1 - b-2
これをjsonで表すと次のようになります。
{ "A": [ "a-1", "a-2", "a-3" ], "B": [ "b-1", "b-2" ] }
型
YAMLでは型は自動判別されます。
書き方の例 | 判別される型 |
---|---|
1 / 1,000 | int |
0.1 | float |
true・false / yes・no | bool |
"text" / 'text' | string |
~ / null | null |
2019-01-01 | 日付 |
2020-01-01 00:00:00 +00:00 | タイムスタンプ |
改行を含む文字列
改行を含む文字列は次のように書きます。
A: | line1 line2 line3
これをjsonで表すと次のようになります。
{ "A": "line1\nline2\nline3" }
アンカー・エイリアス
下記のように&[アンカー名]でアンカーを登録し、*[アンカー名]でそれを参照することができます。
- &test a - b - c - *test
これをjsonで表すと次のようになります。
[ "a", "b", "c", "a" ]
アンカーはシーケンスやマッピングに対しても付けられます。
- a - b - &c - c-1 - c-2 - *c
これを利用するとこんなことができます。
players: - &profile1 id: 1 name: taro age: 21 - &profile2 id: 2 name: hanako age: 18 currentPlayer : *profile1
jsonで表すと次のようになります。
{ "players": [ { "age": 21, "id": 1, "name": "taro" }, { "age": 18, "id": 2, "name": "hanako" } ], "currentPlayer": { "age": 21, "id": 1, "name": "taro" } }
フロースタイルという書き方もある
上記の書き方をブロックスタイルと言います。
YAMLにはフロースタイルという書き方もあります。
ここでは深く触れませんが書き方はこんな感じです。
[A, B, C: c]
これをjsonで表すと次のようになります。
[ "A", "B", { "C": "c" } ]
ちなみにブロックスタイルとフロースタイルを混在させることもできます。
簡単に試すためのサイト
YAMLの文法を簡単に試すには下記のサイトが便利だったので紹介します。
YAMLをjsonやpythonにパースしてくれます。
yaml-online-parser.appspot.com