YAMLからJSONへ

YAMLは手書きで書くのが適しているのに対し、JSONはプログラム的に扱うのが適しています。多くの現代のツール(CIパイプライン、Kubernetes、Ansibleなど)は両方をサポートしています。APIゲートウェイ定義やCloudFormationテンプレート、一部のWebhookボディなど、JSONを必須とするツールに設定ファイルを貼り付ける必要がある場合、このコンバーターが相互変換を行います。アンカーやマージ処理、およびYAML専用の型(日付、8進数、null、~など)もすべてJSON形式に正規化されます。

YAMLをJSONに変換する方法

  1. 1

    YAMLを貼り付けます

    有効なYAML 1.1または1.2ドキュメントです。

  2. 2

    アンカーを解決します

    アンカー(`&x`)および別名(`*x`)はインラインで展開されています。マージキー(`<<`)はフラット化されています。

  3. 3

    タイプを標準化する

    日付、空値、ブール値はすべてJSON形式に変換されます。

  4. 4

    JSON出力

    プリント形式または縮小形式で選択できます。

例の変換

YAML:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com
  debug: false

staging:
  <<: *defaults
  host: staging.example.com
  debug: true

JSON(アンカーが解決された):

{
  "defaults": {
    "timeout": 30,
    "retries": 3
  },
  "production": {
    "timeout": 30,
    "retries": 3,
    "host": "prod.example.com",
    "debug": false
  },
  "staging": {
    "timeout": 30,
    "retries": 3,
    "host": "staging.example.com",
    "debug": true
  }
}

タイプマッピング

YAML JSON
文字列 文字列
整数 数値
浮動小数点数 数値
ブール値(true、false) ブール値
ヌル(null、~、空白) null
タイムスタンプ ISO 8601文字列
シーケンス(リスト) 配列
マッピング オブジェクト

YAML特有の要素はJSONでは表現できません

  • コメント。 JSONには標準的なコメント構文がなく、コメントは省略されます。
  • マルチドキュメントストリーム(---区切り)。JSONでは1つのファイルに1つのドキュメントが含まれるが、複数のドキュメントがある場合はコンバーターがドキュメントの配列を出力する。
  • アンカーとエイリアス。 内部で解決され、インラインで複製されます。
  • 複雑なキー(文字列ではないマッピングキー)。JSONキーは文字列でなければならず、複雑なキーは文字列化されます。

1.1対1.2の落とし穴

  • YAML 1.1は、yes、no、on、off、y、nをブール値として解析し、NOは国コードとして静かにfalseに変換される。
  • YAML 1.2では、ブール値の使用がtrueおよびfalseに限定されています。より安全ですが、多くのパーサ(PyYAMLのデフォルトを含む)は依然としてYAML 1.1を使用しています。

コンバータはデフォルトでセマンティクスを1.2に設定しており、結果が1.1の場合に変化した場合には警告を表示します。

JSONからYAMLへの往復変換

JSONからYAMLへの変換は通常、無損失です(JSONはYAML 1.2の構文の一部です)。一方、YAMLからJSONへの変換は損失ありであり、コメントやmerge-key構造が失われます。往復処理を行う場合は、バージョン管理システム上で元のYAMLデータを保持してください。

よくある質問

いいえ、それらにはYAMLの解析前に実行される独自のテンプレートが存在します。まずテンプレート(kustomize buildまたはhelm templateを使用して)をレンダリングし、その出力をここに渡してください。

YAMLのタイムスタンプはJSON形式でISO 8601文字列に変換されます。例えば、2026-04-18は"2026-04-18"になります。時間およびタイムゾーンは保持されます。

ブラウザでの実際の上限は約10MBです。より大きなファイル場合は、コマンドラインでyqまたはpython -c "import yaml, json; print(json.dumps(yaml.safe_load(open(file))))"を使用してください。

いいえ。変換処理はブラウザ内で実行され、何のデータも送信されません。

関連ツール

このツールは他の言語でも利用できます