YAML→JSON変換
YAMLドキュメントをJSON形式に変換する方法を学びます。構文のマッピング、よくある変換の落とし穴、プロジェクトでJSONを選ぶべきタイミングを解説します。
Basics
詳細な説明
YAMLからJSONへの変換は、APIやツールが厳密なJSON入力を要求する場合に不可欠です。YAMLは人間にとって読みやすいですが、JSONは事実上すべてのプログラミング言語とAPIでサポートされている普遍的なデータ交換形式です。
一般的なYAMLドキュメント:
server:
host: localhost
port: 8080
debug: true
database:
url: postgres://localhost/mydb
pool_size: 5
JSONに変換すると:
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true
},
"database": {
"url": "postgres://localhost/mydb",
"pool_size": 5
}
}
変換時に変わること:
- インデントが波括弧と角括弧に変わる。 YAMLの空白ベースのネストは、オブジェクト用の
{}と配列用の[]に置き換えられます。 - すべてのキーがクォートされる。 JSONはすべてのキーにダブルクォートが必要です。
- 文字列値がクォートされる。 YAMLのクォートなし文字列はJSONではダブルクォートで囲まれます。
- コメントが失われる。 YAMLは
#コメントをサポートしますが、JSONにはコメント構文がありません。これが変換時の最も大きな情報損失です。
よくある落とし穴:
- YAMLはクォートなしの
yes,no,on,offをYAML 1.1でブーリアンとして解釈します。文字列として意図していた場合、JSONではtrue/falseになってしまいます。 - YAMLの数値
010は8進数(値は8)として解釈される場合があり、10進数の10ではありません。 - クォートなしのタイムスタンプ
2024-01-15は文字列ではなくDateオブジェクトとして解析される可能性があります。
データ型が意図通りに保持されていることを確認するため、変換後は必ずJSON出力を検証しましょう。
ユースケース
YAML設定ファイルをJSONに変換してから、JSONコンテンツタイプのみを受け付けるREST APIエンドポイントにペイロードとして渡す場合。