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
  }
}

変換時に変わること:

  1. インデントが波括弧と角括弧に変わる。 YAMLの空白ベースのネストは、オブジェクト用の {} と配列用の [] に置き換えられます。
  2. すべてのキーがクォートされる。 JSONはすべてのキーにダブルクォートが必要です。
  3. 文字列値がクォートされる。 YAMLのクォートなし文字列はJSONではダブルクォートで囲まれます。
  4. コメントが失われる。 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エンドポイントにペイロードとして渡す場合。

試してみる — JSON ↔ YAML Converter

フルツールを開く