JSON → YAML 変換
無料オンライン JSON→YAML 変換ツール。JSONをワンクリックでYAML 1.2標準設定に変換。インデント幅のカスタマイズ、JSON構文エラーの自動修復、Kubernetesマニフェスト・Docker Compose・GitHub ActionsなどのYAML設定ファイルを生成。すべての処理はブラウザローカルで実行。
関連おすすめ
YAMLとは?なぜJSONをYAMLに変換するのか?
YAML(YAML Ain't Markup Language)は人間に優しいデータシリアライズ形式で、設定ファイルを読みやすく書きやすくするために設計されました。YAML 1.2が現在の安定バージョンで、Clark Evansにより2001年に提案され、現在ではKubernetes、Docker Compose、GitHub Actions、Ansible、CircleCI、Prometheusなど、ほぼすべての主要DevOpsツールの設定に広く使用されています。YAMLの設計哲学は可読性を簡潔さより優先し、インデント+コメント構造を採用しています。
JSONとYAMLはスーパーセット関係にあり(JSONはYAMLのサブセット)、変換は技術的には単純な構文再フォーマットですが実用的に大きな意味があります:①可読性向上 - YAMLは中括弧とカンマの代わりにインデントを使用、キーワードのクォートも省略可能。②コメントサポート - YAMLは#コメントをサポート。③複数文書サポート - YAMLは---区切りで単一ファイル複数文書をサポート。④型自動認識 - YAMLはクォートなしでも数字・ブール・nullを認識可能。
YAMLの3つの基本データ構造:①スカラー - 単一値。②シーケンス - JSON配列相当、- 開始で表現。③マッピング - JSONオブジェクト相当、key: value で表現。さらにアンカー(&anchor)と参照(*anchor)、ブロックスタイル(| 改行保持)と折りたたみスタイル(> 改行をスペースに)などの高度な構造もサポート。
JSON→YAML変換の一般的な動機:①Kubernetesデプロイが必要だが既存設定がJSON形式。②チームがYAMLで全設定ファイル統一管理に決定。③サードパーティAPI連携時にYAML形式リクエストボディ(OpenAPI、Swagger)が必要。④APIゲートウェイやCI/CDプラットフォームからエクスポートされたJSON設定を人間可読YAMLに変換。⑤モックデータをJSONからYAMLに変換しテストフィクスチャ作成。
変換プロセスは本質的にデータ構造の再マッピング:JSON.parse() がテキストをJavaScriptオブジェクト(AST)に解析し、js-yamlのdump()関数が各ノードを再帰的に走査。文字列・数字・ブール・nullは直接出力、配列は - リストに、ネストオブジェクトはインデント階層に変換。全プロセス純粋ローカル実行、変換結果は100%標準YAMLパーサー互換。
ユースケース
- Kubernetesマニフェスト作成:HelmテンプレートやCI/CDツールが生成したJSON設定を標準Deployment/Service YAMLに変換
- Docker Compose設定:docker-compose.jsonツールやコンテナ化プラットフォームからエクスポートされたJSONを可読なdocker-compose.ymlに変換
- GitHub Actions / GitLab CIワークフロー:自動化スクリプトが生成したJSON設定をYAMLパイプラインファイルに変換
- Ansible Playbook作成:タスクオーケストレーションJSONをAnsibleが想定するYAML形式に変換
- マイクロサービス設定統一:分散したマイクロサービスのJSON設定をYAMLリポジトリに統合移行
- Swagger/OpenAPIからのYAML生成:APIツールがエクスポートしたJSON SchemaをOpenAPI標準YAML仕様に変換
- YAML文法学習:手元のJSON構造でネストオブジェクト・配列・特殊値がYAMLでどう表現されるか直感的に確認
- 設定ファイル比較変換:JSONとYAML間で素早く変換し形式比較、プロジェクトに最適な設定言語を選択
使い方
- 左側エディタにJSON内容を貼り付け、またはアップロードボタンで .json/.txt ファイル選択、「サンプル」でプリセットサンプル読み込み
- ツールがYAML 1.2仕様に従い自動リアルタイム変換、右側に即時結果表示。ドロップダウンで2/4スペースインデント切替可能
- JSONに構文エラーがある場合、下部に「JSON修復」ボタン表示、クリックで自動一括修正
- Unicodeエスケープや文字列エスケープが必要な場合、下部ツールバーの「中文↔Unicode」「エスケープ/アンエスケープ」ボタンでワンクリック変換
- 結果に満足したら「コピー」ボタンでYAML内容をコピー、または「ダウンロード」で output.yaml ファイルとして保存
特徴
- YAML 1.2 標準出力:公式 YAML 1.2 仕様に準拠し、Kubernetes、Docker Compose、GitHub Actions、Ansible など主要ツールで直接使用可能
- インデント幅カスタマイズ:2スペース/4スペース切替可能、プロジェクトのコーディングスタイルに対応(YAML 公式は2スペース推奨)
- JSON自動修復:内蔵 tryFixJSON エンジンが末尾カンマ・シングルクォート・コメントなどの一般的なJSONエラーを自動検出・修復後に変換
- Unicode双方向変換:ワンクリックで中文→\uXXXXエスケープ、または逆変換、国際化シーンに対応
- 文字列エスケープ/アンエスケープ:JSON内のダブルクォート・バックスラッシュ・改行にエスケープ追加または復元
- JSON整形と圧縮:入力エリアでJSONをインデント整形または単一行圧縮に変換可能
- リアルタイム双方向編集:左側にJSON貼り付けで右側に即時YAML結果表示、入力と同時に変換
- ファイルアップロード・ダウンロード:.json/.txtファイルアップロード、config.yaml/output.yamlとしてワンクリックダウンロード
- キーボードショートカット対応:Shift+Cmd/Ctrl+F 整形、C 圧縮、U Unicode変換、Z 逆変換、/ エスケープ、. アンエスケープ、O アップロード、D ダウンロード、K クリア
- ドラッグ可能パネルと履歴:PC版の左右パネルはドラッグ幅調整可能、最近200件の履歴を自動保存
- JSON整形ツールへ遷移:変換完了後、ワンクリックでJSON整形ツールに遷移し整形・検証・圧縮を続行可能
- 純フロントエンドローカル処理:すべての解析・変換・エスケープはブラウザのJavaScriptで実行、機密設定はサーバーにアップロードされない
よくある質問
JSONをYAML形式に変換するには?
JSON内容を左側エディタに貼り付けると、ツールがYAML 1.2仕様に従って自動的に可読形式に変換します。キー値ペアは key: value に、ネストオブジェクトはインデントで階層表現、配列は `- item` リスト構文に。変換完了後ワンクリックでコピーまたは.yamlファイルとしてダウンロード。JSONに構文エラーがある場合はツールが自動修復を試みた後に変換します。
YAMLとJSONはそれぞれどのようなシーンに適する?
YAMLは人間可読な設定シーン(Kubernetesマニフェスト、Docker Compose、GitHub Actions、Ansible Playbook、CI/CDパイプライン設定)に適します。JSONは機械解析・データ交換シーン(REST APIリクエスト/レスポンス、マイクロサービス間通信)に適します。設定記述にはYAML、データ伝送にはJSONです。本ツールは逆方向 YAML→JSON 変換もサポート。
インデントは2スペースと4スペースどちらが良い?
YAML公式は2スペースインデント推奨(Pythonスタイルと一致)。Kubernetes、Docker Compose、GitHub Actionsなど主要ツールのデフォルトスタイル。一部プロジェクトでは4スペース使用。本ツールは2/4スペース自由切替、再変換不要で即時変更可能。
生成YAMLはKubernetesで直接使用可能?
可能です。YAML 1.2公式仕様に準拠し、Kubernetes YAMLパーサー(kubectl apply)の構文要件を満たします。deployment.yaml/service.yamlとして保存し kubectl apply -f で適用可能。YAMLはインデントに敏感なため、コピー時に余分なスペースやTabを使用しないでください。
複数文書YAML(---区切り)生成に対応?
現在のバージョンは主に単一文書の JSON→YAML 変換用。JSONが複数の独立オブジェクトの配列の場合、リスト形式で出力。複数文書YAML(---区切り)が必要な場合、変換後に手動で --- 区切り文字を追加するか、YAML整形ツールでさらに処理してください。
中文/特殊文字が含まれるJSONは文字化けしない?
文字化けしません。UTF-8エンコーディング完全対応、中文・日本語・韓国語・絵文字・特殊記号など全Unicode文字対応。中文を \uXXXX エスケープに変換する必要がある場合は「中文→Unicode」ボタンでワンクリック。逆方向復元は「Unicode→中文」を使用。
JSON文字列内のダブルクォートと改行はどのように処理?
YAMLは複数の文字列表現方法をサポート:クォートなし(単純文字列)、ダブルクォート囲み(\n・\tエスケープ対応)、シングルクォート囲み(リテラル)、| ブロックスタイル(改行保持)、> 折りたたみスタイル(改行→スペース)。本ツールはデフォルトでダブルクォートスタイル出力。JSON文字列に改行が含まれる場合、YAMLは自動的に \n エスケープ。
変換後、すべての値が文字列になる?
デフォルトではツールがJSONの元の型をインテリジェントに認識・保持。数字はYAML数字(クォートなし)、ブール値は true/false、null は null または ~ に変換。すべての値を文字列として扱いたい場合はJSON側ですべての値を文字列として囲んでから変換。
ローカルブラウザ変換時、設定ファイルはアップロードされる?
アップロードされません。すべてのJSON解析・YAML生成・文字列エスケープ・Unicode変換・JSON修復はブラウザローカルのJavaScriptエンジンで実行され、ネットワーク経由でサーバーに送信されません。オフラインでも使用可能。データベースパスワード・APIキー・Kubernetes Secret設定を含むJSONも安心して変換できます。
トラブルシューティング
JSONが「Unexpected token」エラーになった場合の対処は?
JSON構文エラーです。一般的な原因:①末尾余分なカンマ(trailing comma)、例 {"a":1,};②ダブルクォート代わりにシングルクォート、例 {'a':1};③キー名ダブルクォート囲みなし、例 {a:1};④コメント // または /* */。ツール下部「JSON修復」ボタンで末尾カンマ補完・ダブルクォート追加・コメント削除等を自動試行。修復後に再変換。
kubectl applyが「yaml: invalid character」エラーになる?
通常はインデントエラー。YAMLは厳密にスペースインデント要求、Tab文字混在は解析失敗原因。確認事項:①全インデントがスペースか(Tabでない);②同階層のインデントスペース数一致か(2または4スペース);③インデントがネスト階層に揃っているか。本ツール出力は純粋スペースインデント使用、Tab混在なし。ただし手動コピー&ペースト時にTab混入すると問題発生。
YAML文字列内の改行が \n になった場合の対処は?
デフォルトではJSON文字列内改行(\n)はYAML変換時に \n エスケープ。実際の改行を保持したい場合(Docker Compose command複数行等)は変換後に手動でYAMLブロックスタイルに変更:| シンボルで識別、例 description: |\n 一行目\n 二行目。または「アンエスケープ」ボタンでJSON内 \n を実際の改行に変換後再変換。
変換後YAMLでnull値が ~ シンボルになった場合は?
YAMLは ~ または null で空値表現、両者は等価。ツールが ~ を認識しない場合、手動で null に置換可能。またはツール出力オプション切替で全nullを ~ ではなく明示的に null 出力。YAML 1.1では NO/On/Off がブール値 false として解析される点注意(ノルウェー問題)、YAML 1.2で修正済み、本ツール出力は1.2仕様準拠。
中文がYAMLで \uXXXX エスケープ形式表示されるのは?
デフォルトではツールはネイティブUTF-8中文出力、エスケープされません。誤って \uXXXX 表示の場合:①入力されたJSONが元々Unicodeエスケープ形式;②下部「中文→Unicode」ボタンクリック。「Unicode→中文」ボタンで逆変換可能。
大ファイル変換でブラウザがフリーズする場合は?
リアルタイム変換最適化(500msデバウンス)実装済みだが、超大ファイル(>1MB、数十万行)では負荷可能性あり。推奨:①JSON整形ツールでJSON合法性確認;②単一の大きなJSONか複数独立JSON連結でないか確認;③超大設定ファイル(10MB+)は yq、kubectl convert 等コマンドラインツール推奨;④ブラウザフリーズ時は余分タブ閉じてメモリ解放後再試行。
用語集
- YAML
- YAML Ain't Markup Language(再帰的頭字語)、人間可読なデータシリアライズ形式。Kubernetes、Docker Compose、AnsibleなどDevOpsツールの実質標準設定言語。
- インデント
- YAMLは階層関係をインデント(スペースのみ、Tab不可)で表現。インデントエラーは設定解析失敗や意味変化を引き起こす、YAML最大の落とし穴。
- シーケンス(Sequence)
- YAMLの配列表現。- item で各要素を表現、JSON配列に相当。
- マッピング(Mapping)
- YAMLのオブジェクト表現。key: value で各キー値ペアを表現、JSONオブジェクトに相当。
- ブロックスタイル(Block Scalar |)
- YAMLの複数行文字列表記。| シンボルで識別、全改行とインデント保持、heredoc相当。
- 折りたたみスタイル(Folded Scalar >)
- YAMLの複数行文字列表記。> シンボルで識別、単一改行はスペースに置換、連続2改行のみ段落区切りとして保持。
- アンカーと参照(Anchor & Reference)
- YAMLは &name でアンカー定義、*name で同一設定を参照、重複回避。K8sで同一Secretを複数箇所参照する場合などに一般的。
- YAML 1.2
- YAMLの現在の安定バージョン仕様(2009年公開、2021年マイナー改訂)。本ツールはこのバージョン(yaml.org/spec/1.2.2)に準拠。
- 複数文書YAML(Multi-document)
- YAMLは単一ファイル複数文書をサポート、---区切り文字で異なる文書を分離。Kubernetesで1つのyamlにDeployment+Service+ConfigMap等複数リソースを含められる。
- Kubernetes YAML
- KubernetesマニフェストのYAML形式。apiVersion、kind、metadata、specの4必須フィールドを含む、K8sデプロイメントの実質標準。
- ノルウェー問題(YAML 1.1)
- YAML 1.1仕様は NO/On/Off 等をブール値 false として解釈し国名解析エラー発生。YAML 1.2で修正、本ツール出力は1.2仕様準拠。
- Docker Compose
- Docker複数コンテナオーケストレーションツールの設定ファイル、YAML形式。services、networks、volumes等セクションを定義、コンテナ化デプロイメントの実質標準。
JSON型とYAML記述マッピング表
本ツールは以下のルールでJSON型をYAML型に変換:
| JSON型 | YAML記述 | 説明 |
|---|---|---|
| string | name: "Alice" | YAMLはデフォルトクォート不要、特殊文字含む場合はダブルクォート必要 |
| integer | port: 8080 | YAMLは数字型自動認識、クォート不要 |
| float | ratio: 3.14 | 浮動小数点数は整数と同様、YAMLが自動認識 |
| boolean | enabled: true | YAMLは小文字 true/false のみ、YAML 1.1は yes/no もサポート |
| null | value: null または ~ | YAMLは null またはチルダで空値表現 |
| array | - item1\n- item2 | YAMLは各行 - 開始で要素表現 |
| object | key:\n sub: value | オブジェクトは key: value、ネストはインデント表現 |
| object array | - name: a\n- name: b | オブジェクト配列は - の後にキー値ペア |
YAML文字列スタイル対照表
YAMLは6種の文字列記述方法をサポート:
| スタイル | 構文例 | 適用シーン |
|---|---|---|
クォートなし | name: Alice | 単純文字列、最も一般的 |
ダブルクォート | name: "Alice" | 特殊文字含む、\n等エスケープ対応 |
シングルクォート | name: 'Alice' | リテラル文字列、エスケープ不要 |
ブロックスタイル | bio: |\n line1\n line2 | 全改行・インデント保持(heredoc) |
折りたたみスタイル | bio: >\n line1\n line2 | 単一改行はスペース、二重改行で段落分け |
明示的タグ | value: !!str 123 | 型強制、デフォルト推論上書き |
JSON→YAML変換例対照
複雑なJSON構造の対応YAML出力:
| 構造 | 例 |
|---|---|
| JSON入力 | {"name": "app", "port": 8080} |
| YAML出力 | name: app
port: 8080 |
| JSON入力 | {"server": {"host": "0.0.0.0", "port": 443}} |
| YAML出力 | server:
host: 0.0.0.0
port: 443 |
| JSON入力 | {"hosts": [{"ip": "10.0.0.1"}, {"ip": "10.0.0.2"}]} |
| YAML出力 | hosts:
- ip: 10.0.0.1
- ip: 10.0.0.2 |
| JSON入力 | {"spec": {"replicas": 3, "image": "nginx:1.25"}} |
| YAML出力 | spec:
replicas: 3
image: nginx:1.25 |
Privacy & Security
本ツールの全JSON解析・YAML生成・文字列エスケープ・Unicode変換・JSON自動修復・ファイル読み取りはブラウザローカルのJavaScriptエンジンで実行され、JSON内容と生成YAML設定はネットワーク経由でサーバーに送信されず、記録や分析もされません。データベースパスワード・APIキー・Kubernetes Secret設定を含むJSONも安心して変換可能。ローカル履歴はブラウザのlocalStorageのみ保存、ブラウザ終了またはキャッシュクリアで削除。
Authoritative References
- yaml.orgYAML 1.2 公式仕様
- yaml.orgYAML 公式 FAQ
- WikipediaYAML - Wikipedia
- KubernetesKubernetes YAML 公式チュートリアル
- DockerDocker Compose 公式ドキュメント
- JSON 圧縮
- CSV to JSON
- JSON から CSV
- JSON Diff
- JSON Escape / Unescape
- JSONフラット化
- JSON フォーマッター
- JSON 生成
- JSONPath オンラインクエリ
- JSON マージ
- JSON 修復
- JSON Schema バリデーター
- JSONソート
- JSON Stringify
- JSONをHTMLに変換
- JSONからJavaへ
- JSON から Markdown
- JSON を SQL に変換
- JSON から TOML へ変換
- JSONをTypeScriptに変換
- XML を JSON に変換
- JSONをXMLへ変換
- YAML を JSON に変換
- JSON → YAML 変換
- JSON から Go へ
- JSON から Rust
- JSON から Swift
- JSON から C#
- JSON から C++
- JSON を PHP に
- JSON から Python