YamlとJsonの比較
2020/01/26
YamlMemo
同じデータをYamlで記述した場合とJsonで記述した場合で比較しました。備忘録です。

目次
これは何
最近、AWSのCluodFromationやGithub Actions、Dockerの設定ファイルなど色々なところでYaml形式のデータを見かけることが多くなってきたので、 備忘録としてYaml形式で記述したデータとJson形式で記述したデータを比較しました。
なお、オンライン上でYamlとJsonを変換してくれるツールがあるので、実際に試しながら進めていくと理解が深まりやすいかと思います。
Best Online YAML Converter - Convert YAML Strings into JSON, XML, CSV
yamlとjsonを比較
コメントアウト
yaml
count: 3 # これはコメント基本型
yaml
count: 3
name: "takigawa"
value: 3.2
boolean: truejson
{
"count": 3,
"name": "takigawa",
"value": 3.2,
"boolean": true
}シーケンス
yaml
list:
- 3
- takigawa
- 3.2
- truejson
{
"list": [
3,
"takigawa",
3.2,
true
]
}マップ
yaml
map:
name: "takigawa"
value: 3.2
boolean: truejson
{
"map": {
"name": "takigawa",
"value": 3.2,
"boolean": true
}
}配列の要素をマップにする
基本的にインデント位置が同じデータは同じキーに属すると考えてよい。
yaml
list:
- name: "bobyama"
value: 3.2
- name: "takigawa"
value: 3
boolean: truejson
{
"list": [
{
"name": "bobyama",
"value": 3.2
},
{
"name": "takigawa",
"value": 3,
"boolean": true
}
]
}jsonっぽい書き方もできる
yaml
list: ["takigawa", 3.2, true]
map: {name: "takigawa", value: 3.2}json
{
"list": [
"takigawa",
3.2,
true
],
"map": {
"name": "takigawa",
"value": 3.2
}
}複数行にすることも可能っちゃ可能っぽい。
yaml
list: ["takigawa",
3.5,
true,
fsdafs,
fdsafd,
null]
map: {name: "takigawa",
value: 3.2}改行文字を含む文字列
yaml
name: |
takigawa
bobyama
description: >
this
is
description
value: 3.2key-valueのvalueを | で指定すると、インデントした後の文字列が実際のvalueとして扱われる。
json
{
"name": "takigawa\nbobyama\n",
"description": "this is description\n",
"value": 3.2
}マップやシーケンスは別名をつけて参照できる
yaml
map: &alias
name: "takigawa"
value: 3.2
boolean: true
map2:
data: *alias
list: &alias2
- item1
- item2
list2:
- *alias2json
{
"map": {
"name": "takigawa",
"value": 3.2,
"boolean": true
},
"map2": {
"data": {
"name": "takigawa",
"value": 3.2,
"boolean": true
}
},
"list": [
"item1",
"item2"
],
"list2": [
[
"item1",
"item2"
]
]
}マップをマージする
yaml
map: &map
name: takigawa
value: 3.2
map2:
name: bobyama
count: 3
<<: *map
json
{
"map": {
"name": "takigawa",
"value": 3.2
},
"map2": {
"name": "bobyama",
"count": 3,
"value": 3.2
}
}参考リンク
© 2019- TAKIGAWA MEMO