YAML ↔ JSON 変換

YAML形式とJSON形式のテキストを相互に変換します。構文チェック機能も搭載。

入力したデータはサーバーに送りません。すべてブラウザ内で処理するので、APIキーや機密情報も安心して使えます。

このツールについて

設定ファイルでおなじみの「YAML」と、APIで必須の「JSON」をお互いに変換できるツールです。構文エラーがある場合は場所を教えてくれるバリデーション機能付き。すべてブラウザ上で処理されるため、機密情報が含まれるファイルも安心です。

「GitHub Actionsやdocker-composeのYAMLを、プログラムで処理しやすいJSONにしたい」「APIから返ってきた読みにくいJSONを、人間が編集しやすいYAMLの形で見たい」──開発中によくあるそんな要望に応えます。テキストボックスにコピペするだけで双方向に変換でき、もしインデントのズレやカッコの閉じ忘れといった構文エラーがあればエラーメッセージで教えてくれます。サーバー送信なしで動く完全ローカルツールです。

ツール操作

 

YAMLとJSONの違いと使い分けの完全ガイド

モダンなシステム開発において、データのシリアライズ形式として「YAML」と「JSON」は最も広く使われています。しかし、それぞれにメリットと特有の落とし穴があるため、用途に応じて正しく使い分けることが重要です。このガイドでは、両者の構文の違い、実務での使い分け、パース時の注意点について詳しく解説します。

YAMLとJSONの決定的な違い

JSON (JavaScript Object Notation) は、データ転送を主目的とした軽量なフォーマットです。対して YAML (YAML Ain't Markup Language) は、人間にとっての読み書きのしやすさを最優先に設計されています。実はYAMLはJSONのスーパーセット(完全上位互換)であるため、有効なJSONはすべて有効なYAMLとして解釈されます。

特徴 JSON YAML
可読性 記号(や[])が多く、ネストが深くなると人間には読みづらい インデントベースで記号が少なく、人間にとって非常に読みやすい
コメント 不可(仕様上存在しない) 可能(# を使用)
パース速度 非常に高速、標準ライブラリで完結 JSONに比べて遅く、外部パーサーが必要な言語が多い
主な用途 API通信、システム間のデータ連携 設定ファイル(CI/CD、Docker、Kubernetes等)

実務での使い分けパターン(Use Cases)

JSON を選ぶべきシーン

  • API通信: フロントエンド(React/Vue)とバックエンド間のデータ連携。ブラウザにJSON.parse()がネイティブ実装されているため最速です。
  • ログ出力: 構造化ログ(ElasticsearchやDatadogへ送信)にはパースしやすい1行JSONが適しています。
  • データの保存: MongoDBなどのドキュメント指向DBでのデータ保存フォーマット。

YAML を選ぶべきシーン

  • インフラ設定ファイル: Docker Compose(docker-compose.yml)や、Kubernetesのマニフェストファイル。
  • CI/CDパイプライン: GitHub ActionsやGitLab CIの設定。手順を人間がステップバイステップで読み書きするのに最適です。
  • コメントが必要な設定: 他の開発者に意図を伝えるための説明文を残したい場合。

よくある落とし穴(Gotchas)とエラー対策

JSONとYAMLを変換する際、特に手書きで編集しているとしばしばエラーに遭遇します。代表的なミスを知っておきましょう。

1. YAMLのインデントミス

YAMLはPythonのようにインデント(空白文字)でデータ構造を表現します。タブ文字は仕様として禁止されているため、必ず半角スペース(通常は2文字)を使用してください。インデントが1つズレるだけで全く異なるデータ構造になってしまいます。

2. JSONの末尾カンマ(Trailing Comma)

JSONの構文チェックで最も多いエラーがこれです。配列やオブジェクトの最後の要素の後にカンマをつけることは、仕様上許されていません。

{
  "name": "taro",
  "age": 20, /* ← このカンマがあるとJSONParserがエラーを吐く */
}

3. YAMLの暗黙の型変換

YAMLは文字列をクォーテーションなしで書けますが、特定の文字列(true, false, yes, no, on, offなど)は自動的に論理値(Boolean)に変換されます。意図的に文字列として扱いたい場合は、必ず "yes" のようにダブルクォートで囲んでください。ノルウェーの国コード「NO」がパース時にfalseに化けてしまう「Norway Problem」は非常に有名です。

Node.js / Python でのパース方法

Node.js (JavaScript) の場合

JSONはネイティブでサポートされていますが、YAMLを扱うには外部パッケージ(js-yaml等)が必要です。

// JSONのパース(ネイティブ)
const data = JSON.parse('{"key": "value"}');

// YAMLのパース(要 npm install js-yaml)
const yaml = require('js-yaml');
const fs = require('fs');
const doc = yaml.load(fs.readFileSync('config.yml', 'utf8'));

Python の場合

標準ライブラリのjsonに加え、YAMLにはPyYAMLを使用するのが一般的です。

import json
import yaml # pip install pyyaml

# JSONのパース
with open('data.json') as f:
    data = json.load(f)

# YAMLのパース(安全のため safe_load を使用)
with open('config.yml') as f:
    config = yaml.safe_load(f)

この相互変換ジェネレーターについて

DockerやKubernetesの設定を記述する際、世の中にあるサンプルコードがJSONで書かれていると、手作業でYAMLに直すのは非常に手間とミスを伴います。当サイトのYAML/JSON変換ツールは、インデントの調整からクォーテーションの処理までをブラウザ上で即座に実行します。サーバーへのデータ送信は一切行わないため、システム固有の機密を含む設定ファイルも安全に変換することができます。

使い方

  1. YAMLまたはJSONを入力欄に入力します
  2. 「YAML→JSON」または「JSON→YAML」ボタンをクリックして変換します
  3. 構文エラーがあれば検出して表示されます。変換結果をコピーして使用できます

いつ使うか

設定ファイルの形式変換、CI/CDの設定をJSONに、APIのYAML仕様をJSONに、docker-compose等の編集に。

使用例

key: value → {"key":"value"}、ネストしたYAMLをJSONに、JSONを読みやすいYAMLに。

よくある質問

JSONとYAMLの違いは?

JSONは波括弧と角括弧で構造を表し、APIの標準。YAMLはインデントで構造を表し、人間が読みやすい。YAMLはコメントや複数行文字列が可能。docker-composeやGitHub ActionsはYAMLが多いです。

YAMLのインデントルールは?

スペースでインデント(タブは不可)。2スペースが一般的。インデントの深さでネストを表現するため、スペースの数が重要です。

いつYAMLを使う?

設定ファイル(docker-compose、GitHub Actions、Kubernetes)、CI/CD、人間が編集する設定に。APIの入出力はJSONが多いです。

YAMLは何の略?

YAML Ain't Markup Languageの略(再帰的頭字語)。もともとはYet Another Markup Languageの略でした。データ記述に特化したフォーマットです。

YAMLとJSONは相互変換できる?

はい。同じデータ構造を異なる記法で表しているため、相互変換可能です。このツールでYAML→JSON、JSON→YAMLの変換ができます。

YAML JSON変換ツールの使い方は?

YAMLまたはJSONを入力して「YAML→JSON」または「JSON→YAML」で変換。構文エラーがあれば表示されます。

docker-composeをJSONに変換するには?

docker-compose.ymlの内容をこのツールに入力し、YAML→JSONで変換。APIに渡す形式にできます。

GitHub ActionsのYAMLをJSONに?

ワークフローファイルをこのツールでJSONに変換。プログラムで処理する際に便利です。

YAML JSON変換はデータを送信する?

いいえ。すべてブラウザ内で完結。設定ファイルの内容はサーバーに送信されません。

YAMLの構文エラーを確認するには?

このツールで変換を試みる。エラーがあれば検出して表示されます。インデントミスなどが分かります。

関連ツール