JSON to YAML コンバーター
JSONを貼り付けるだけで即座にYAMLを取得。ブラウザ内でリアルタイム変換。K8s・Compose対応、2/4スペースインデント、Norway問題対応自動クォート。100%プライベート、データは送信されません。
オプション · 2スペース · 自動 · ブロック
YAMLとは何ですか?なぜJSONから変換するのですか?
YAML(YAML Ain't Markup Language)は人間が読めるデータシリアライゼーション形式で、設定ファイル・Infrastructure as Code・人間が書いてマシンが読むあらゆる場面向けに設計されています。インデントベースの構文は波括弧や角括弧を必要とせず、複雑なネスト構造をJSONよりはるかに読みやすくします。Kubernetes・Helm・Ansible・Docker Compose・GitHub Actions・CircleCI、そして事実上すべてのクラウドネイティブツールがYAMLを主要な設定フォーマットとして使用しています。したがってJSONをYAMLに変換することはDevOpsやバックエンド開発で最もよくある作業の一つです — APIからJSON形式でリソース定義を受け取り、バージョン管理にコミットするためのYAMLマニフェストが必要になります。
典型的なオンラインコンバーターと比較して、このツールには4つの重要な差別化ポイントがあります。
**1. Norway問題 — 自動安全クォート。** JSON to YAML変換で最大の落とし穴はYAML の Norway 問題です。YAML 1.1(何百万もの本番パーサーが今も使用しており、旧バージョンのKubernetes・PyYAML・Ansible・RubyのPsychを含む)では、裸の文字列yes・no・on・off・y・nがブール値true/falseとして解析されます。これはノルウェーのISOカントリーコード("NO" → false)で有名になり、Kubernetes設定で実際の本番障害を引き起こしました。YAML 1.2ではこの問題が修正されましたが、あなたのパーサーが1.2を使っているとは限りません。このツールのデフォルト「自動」クォートモードはYAML 1.1スキーマを持つeemeli/yamlライブラリを使用し、すべてのNorway問題文字列を自動的にクォートで囲み、YAML 1.1と1.2の両パーサーで安全な往復を保証します。詳細は私たちの解説記事 YAML の Norway 問題とJSON-YAML変換の差異 をご覧ください。
**2. キー順序の保持。** キーをアルファベット順にソートする一部のコンバーターとは異なり、このツールはJSONの元のキー挿入順序を保持します。これはすべての最新のJavaScriptエンジンのJSON.parse()の動作と一致しています。KubernetesマニフェストではapiVersionとkindが慣例として最初に来ることが期待されており、OpenAPI仕様ではinfoがpathsの前に来ます。フィールドの順序が可読性やdiffにとって意味があるあらゆる設定でこの順序保持が重要です。
**3. 大きな数値の精度に関する注意。** 2^53 - 1(9007199254740991)を超えるJSON数値はJavaScriptのIEEE 754倍精度浮動小数点数で正確に表現できません。JSON.parse()がKubernetesのresourceVersionフィールドのような大きな整数(サーバー側では64ビット整数)を読み取ると、無言で切り捨てます。これはこのツールを含むすべてのブラウザベースのJSONツールに影響する根本的なブラウザJavaScriptの制限です。安全な回避策は変換前に大きな整数をJSONで文字列として保存することです。このツールは下の「数値精度の損失」のよくあるエラーでこの動作を正直に説明しています。
**4. 100%ブラウザベースのプライバシー。** あなたのJSONデータ(APIキー・データベース認証情報・内部サービス設定・本番シークレットを含むことが多い)はブラウザを離れることはありません。データはどのサーバーにも送信されません。ブラウザの「ネットワーク」タブで確認できます。これはオンラインツールでセンシティブな設定データを扱う唯一の安全な方法です。逆方向のコンパニオンツールは YAML to JSONコンバーター をご覧ください。変換前にJSONを検証して整形したい場合は JSON整形ツール を使用してください。
YAMLの人間が読みやすい性質にはトレードオフがあります。JSONよりも多くのパースエッジケースがあります。Norway問題の他にも、YAMLには8進数の特性(YAML 1.1では0777が511として解析される)・複数行文字列構文(|はリテラル、>はフォールド)・アンカーとエイリアスの参照(&anchorと*alias)・複数ドキュメントのサポート(---セパレーター)があります。JSONにはこれらの複雑さはありません — 6つのデータ型のみを持つ厳密で最小限のフォーマットです。マシン間のデータ交換にはほぼ常にJSONが優れた選択です。人間が編集する設定ファイルで可読性とコメントが重要な場合はYAMLが優勝します。このコンバーターは両方の長所を提供します:プログラム的にはJSONを使い、インフラの設定にはYAMLに変換できます。
// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';
const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');
// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });
const yamlString = doc.toString({
indent: 2,
lineWidth: 0, // disable line wrapping
defaultStringType: 'PLAIN', // Auto mode: only quote when needed
});
console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment 主な機能
リアルタイム変換
JSONを入力・貼り付けるとYAML出力が即座に更新されます — 「変換」ボタンは不要です。大きな入力(>200KB)はブラウザのレスポンスを維持するために自動的に手動モードに切り替わります。
2または4スペースインデント
2スペース(Kubernetes・Docker Compose・GitHub Actionsの標準)と4スペース(Ansible慣習)インデントを切り替えられます。YAMLではタブは禁止されており、このツールは常にスペースを使用します。
自動安全クォート(Norway対応)
デフォルトの「自動」モードはYAML 1.1スキーマを使用して、YAML 1.1パーサーがブール値として誤読する "no"・"yes"・"on"・"off"・"y"・"n" などの文字列に自動的にクォートを付加し、本番環境の設定ミスを防ぎます。
ブロックスタイルとフロースタイル
ブロックスタイルはマニフェストや設定ファイルに最適なインデントされた人間が読みやすいYAMLを生成します。フロースタイルはJSONに似たコンパクトなインラインYAMLを生成し、ドキュメントのスニペットや最小出力を好むツールに便利です。
100%ブラウザベースのプライバシー
すべての変換はJavaScriptを使用してブラウザ内でローカルに実行されます。APIキー・認証情報・本番設定を含むJSONデータはどのサーバーにも送信されず、記録されず、保存されません。
K8s・Compose・Terraformファイルに対応
実際のDevOpsユースケースに最適化:Kubernetesマニフェスト・Docker Composeスタック・Helm chartのvalues・GitHub Actionsワークフロー・OpenAPI仕様・Terraform JSONプランの出力 — それぞれのサンプル付きです。
サンプル
Kubernetes Deployment
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}} JSON APIレスポンス形式のKubernetes DeploymentマニフェストをYAMLに変換し、kubectl apply -f で適用できる形式にします
Docker Compose
{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}} Docker ComposeサービスのJSONをdocker compose upで必要なYAML形式に変換します
GitHub Actionsワークフロー
{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}} GitHub Actions CIワークフロー定義をJSONからYAMLに変換し、.github/workflows/ にコミットできる形式にします
OpenAPI仕様
{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}} OpenAPI 3.0仕様をJSONからYAMLに変換します — Swagger UI、Redoc、およびほとんどのAPIツールで推奨される形式です
package.json
{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}} 典型的なNode.jsのpackage.jsonをYAMLに変換します — YAMLを好むプロジェクト設定ツールへの移行に便利です
Terraform JSONプラン
{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]} Terraform JSONプランの出力をYAMLに変換し、人間によるレビュー、GitOps監査証跡、CI/CDパイプラインに活用できます — 他の多くのコンバーターにはないこのツールの差別化機能です
使い方
- 1
JSONを貼り付ける
上の入力欄にJSONデータを入力または貼り付けてください。「サンプルを読み込む」をクリックして、Kubernetes Deployment・Docker Composeファイル・Terraformプランなどのサンプルを試すこともできます。
- 2
YAML出力をリアルタイムで確認
YAMLは即座に出力パネルに表示されます。オプション(インデント2/4、クォート自動/ダブル/シングル、スタイルブロック/フロー)を調整して、対象ツールの要件に合わせてください。
- 3
コピーまたはダウンロード
「コピー」でYAMLをクリップボードに取得するか、「ダウンロード」でkubectl apply・docker compose up・その他のツールにすぐ使える.yamlファイルとして保存してください。
よくある変換ミス
末尾カンマ
JSONではオブジェクトや配列の最後の要素の後にカンマを置くことができません。JavaScriptコードからコピーするときに非常によく発生します(JavaScriptでは末尾カンマが許可されているため)。変換前に末尾のカンマを削除してください。
{"name": "Alice", "role": "admin",} {"name": "Alice", "role": "admin"} シングルクォート
JSONではすべての文字列値とオブジェクトキーにダブルクォートが必要です。シングルクォートはJavaScriptやPythonでは有効ですが、JSONでは構文エラーです。
{'name': 'Alice', 'active': true} {"name": "Alice", "active": true} クォートなしのキー
JSONオブジェクトのすべてのキーはダブルクォートで囲む必要があります。クォートなしのキーはJavaScriptオブジェクトリテラルでは有効ですが、厳密なJSONでは解析エラーになります。
{name: "Alice", role: "admin"} {"name": "Alice", "role": "admin"} コメントは使用不可
標準JSONはいかなるコメントもサポートしません — //・/* */・# のいずれも使用できません。設定にコメントが必要な場合はYAML(#コメントをサポート)またはJSONC(コメント付きJSON、VS Codeで使用)を使用してください。JSONデータとして使用する前にすべてのコメントを削除してください。
{"port": 8080 // HTTP port} {"port": 8080} YAML の Norway 問題(自動モードでは自動処理)
YAML 1.1パーサー(Kubernetes・Ansible・PyYAML・Ruby Psychが使用)では、裸の文字列yes・no・on・off・y・nが文字列ではなくブール値true/falseとして解析されます。このツールの「自動」モードはYAML出力でこれらの値を自動的にクォートし、YAML 1.1または1.2のどのパーサーでも安全な往復を保証します。「ダブル」または「シングル」クォートモードを選択すると、すべての文字列が明示的にクォートされるため問題を回避できます — ただし「自動」モードの出力の方が自然に見えます。
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true # YAML with Auto quoting (safe): country: 'no' enabled: 'yes' # YAML 1.1 parser reads: country="no", enabled="yes"
大きな整数の精度損失
JavaScriptは2^53 - 1(9007199254740991)までの整数のみを正確に表現できます。これを超えるJSON整数(サーバー側でint64のKubernetesのresourceVersionフィールドなど)はJSON.parse()で解析されるときに無言で丸められ、切り捨てられた数値がYAML出力に表示されます。これはすべてのブラウザベースのJSONツールに影響する根本的な制限です。安全な回避策は変換前にJSONで大きな整数を文字列として保存することです。
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number // Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact) よくある使用場面
- Kubernetesマニフェスト
- kubectl get -o json やKubernetes APIからのJSONレスポンスをYAMLマニフェストに変換し、GitOpsワークフロー・Kustomizeオーバーレイ・kubectl apply -f デプロイに使用します。
- Docker Composeファイル
- docker inspect のJSON出力やプログラムで生成されたサービス設定を、docker compose upやDocker Stackデプロイと互換性のあるdocker-compose.yamlファイルに変換します。
- Helm Chartのvalues
- JSON設定のエクスポートをHelmチャートデプロイ用のYAML valuesファイルに変換し、クリーンなYAML構文でバージョン管理されたインフラ設定を実現します。
- GitHub Actionsワークフロー
- GitHub Actionsワークフロー定義をプログラム的にJSONで構築し、GitHub Actions runnerが必要とする.github/workflows/*.yaml形式に変換します。
- OpenAPI仕様
- 多くのフレームワーク(FastAPI・SpringDoc)が返すJSON形式のOpenAPI/Swagger仕様を、Swagger UI・Redoc・APIゲートウェイツールが好むYAML形式に変換します。
- 設定の移行
- JSONで保存されたアプリケーション設定(appsettings.json・config.json)をYAML形式に移行し、YAMLを必要とするまたは好むツールに対応し、コメントによるドキュメント追加も可能にします。
技術的詳細
- RFC 8259準拠のJSON解析
- JSON入力はブラウザのネイティブJSON.parse()を使用して解析され、RFC 8259に完全準拠しています。位置情報(ベストエフォートの行番号と列番号)を含む正確な構文エラーメッセージを提供し、文字列・数値・ブール値・null・配列・オブジェクトのすべてのJSONデータ型を処理します。
- YAML 1.1スキーマのeemeli/yaml Document APIによるYAML 1.2出力
- YAMLはeemeli/yamlライブラリ(v2.8+、CVE安全)のDocument APIを使用してversion: '1.1'で生成されます。この組み合わせによりYAML 1.2準拠の出力が生成されつつ、YAML 1.1クォートルールが適用されます — つまりNorway問題の文字列(yes/no/on/off/y/n)は出力で自動的にクォートされ、YAML 1.1と1.2の両パーサーで安全です。行の折り返しは無効化(lineWidth: 0)されており、長い文字列もそのまま保持されます。
- 100%ブラウザベース — アップロードなし、サーバーなし
- すべての処理はブラウザのJavaScriptエンジン内で完結します。データはいかなる時点でもネットワーク経由で送信されません。200KBを超える入力はリアルタイムモードから手動モードへ自動的に切り替わります(明示的な「変換」クリックが必要)。ブラウザのレスポンスを維持し、重いシリアライゼーション中にメインスレッドがブロックされるのを防ぐためです。
ベストプラクティス
- DevOps設定には必ず「自動」クォートモードを使用する
- KubernetesやHelm・Ansible・Docker Compose・GitHub Actionsで使用するためにJSONを変換する場合は、常にデフォルトの「自動(Norway対応)」クォートモードを使用してください。これらのツールのYAML 1.1パーサーは裸の文字列yes・no・on・off・y・nを無言でブール値として誤読します — 「自動」モードはこれを透過的に防ぎます。
- クラウドネイティブツールには2スペースインデントを使用する
- Kubernetes・Docker Compose・GitHub Actions・Helmはすべて慣例として2スペースインデントを使用しています。これらのファイルで4スペースインデントを使用することは有効なYAMLですが、コミュニティの例・自動生成された設定・チームの既存マニフェストとの不整合が生じます。
- 変換前に大きな整数を文字列として保存する
- KubernetesのresourceVersion・uid、およびAPIサーバーからのその他のint64フィールドはJavaScriptの安全整数範囲(2^53 - 1)を超える可能性があります。正確な数値精度が必要な場合は、変換前にこれらの値をJSON文字列として保存してください。サーバー側で生成されたフィールドを含むkubectl get -o json の出力では特に重要です。
- まずJSONを検証する
- JSONソースが手書きの場合や、不正な出力を生成することがあるシステム(末尾カンマ・クォートなしキー・コメント)から来ている場合は、変換前にJSONフォーマッターで検証してください。JSON整形ツール を使用して構文エラーを見つけて修正し、クリーンなJSONをYAMLに変換してください。
- バージョン管理に入れるファイルにはブロックスタイルを優先する
- ブロックスタイルYAMLは各フィールドが個別の行に表示されるため、Gitで見やすく人間が読みやすいdiffを生成します。フロースタイル(コンパクトなインライン形式)はdiffの読み取りとレビューを難しくします。フロースタイルはドキュメントへの短いYAMLスニペットの埋め込みやコンパクトな出力を必要とするツールのために取っておいてください。
よくある質問
オンラインでJSONをYAMLに変換するには?
YAMLのNorway問題とは何ですか?このツールはどう対処していますか?
Norway問題はKubernetesとDevOpsにどう影響しますか?
YAMLは2スペースと4スペースどちらのインデントを使うべきですか?
このツールを使ってKubernetesマニフェストを作成するには?
Docker Compose JSONをYAMLに変換するには?
2^53を超えるJSON数値はYAMLへの変換時に精度を失いますか?
コンバーターはJSONのキー順序を保持しますか?
JSONとYAMLはどちらを使うべきですか?
コマンドラインでJSONをYAMLに変換するには?
Python、Node.js、GoでJSONをYAMLに変換するには?
このツールを使うとJSONデータがサーバーに送信されますか?
JSON入力にファイルサイズの制限はありますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
JSONフォーマッター&バリデーター
エンコーディングとフォーマット
無料オンラインJSON整形ツール。ブラウザ上でJSONのフォーマット、構文検証、圧縮を即座に実行。エラー検出、ワンクリックコピー対応。データは端末外に送信されず、100%プライバシー保護。
URLエンコーダー&デコーダー — URL構造パーサー内蔵
エンコーディングとフォーマット
URLを貼り付けるだけで即座にエンコード・デコード。内蔵URLパーサーがプロトコル・ホスト・パス・クエリパラメータを編集可能なフィールドに分解。encodeURIとencodeURIComponentの2モード対応。完全ブラウザ動作でデータ送信なし。
YAML to JSON コンバーター
エンコーディングとフォーマット
YAMLを貼り付けるだけで即座にJSONを取得。ブラウザ内でリアルタイム変換。K8sマニフェスト・OpenAPI仕様・Helm valuesに対応。100%プライベート、データは送信されません。
進数変換ツール — 2進数・16進数・10進数・8進数
単位変換
無料オンライン進数変換ツール。2進数、8進数、10進数、16進数および任意の基数(2-36)間で数値を瞬時に変換。BigInt対応で桁数制限なし。登録不要・サーバー送信なし、すべての処理がブラウザ内で完結。コピーボタンやコードリテラル出力で開発作業を効率化。
JPEG・PNG・WebP をオンラインで圧縮 — 無料・一括対応
単位変換
無料オンライン画像圧縮ツール。JPEG、PNG、WebP 画像をブラウザ上で最大 80% 縮小。サーバーへのアップロード不要で完全プライベート。最大 20 枚の一括圧縮、品質調整、圧縮前後の比較機能を搭載。登録不要ですぐに使えます。