YAMLJSON
YAML JSON 変換
YAMLをJSONにオンラインで変換 — ブラウザ内で即座に。
YAMLをここに貼り付けるか、ファイルをページにドロップ
入力するとJSONがここに表示されます
無料・無制限 · 登録不要 · アップロードは一切なし — すべての変換はお使いの端末内で実行されます。
この無料YAML→JSON変換ツールについて
左側のペインにYAMLを貼り付けると、入力と同時に右側にJSONが表示されます。変換ボタンもアップロードもサーバーとの通信もありません。変換は無料かつ無制限でアカウントも不要です。パーサーがページ内に組み込まれているため、回数制限もなく、ファイルサイズの上限は端末のメモリだけです。出力は自由に調整できます:2スペース、4スペース、圧縮、キーのソート、そしてKubernetesのマルチドキュメントストリームはJSON配列またはJSON Linesとして出力できます。
力を入れたのはエラー時の挙動です。パースエラーには行と列、エディタ上のマーカー、平易な説明、そして具体的な修正案が付きます。閉じられていない括弧は「閉じられていない括弧」として報告され、40行先の紛らわしいインデントエラーとしては報告されません。YAML 1.1と1.2の間で意味が変わる値(Norway問題とその仲間)はすべて、各バージョンでの解釈結果とともに警告されます。
JSONではなく整ったYAMLが欲しい場合は、YAMLフォーマッターがドキュメントをその場で整形し、コメントをすべて保持します。逆方向にはJSON→YAML変換ツールがあります。変換をブラウザではなくスクリプトで行いたい場合は、コードとコマンドラインのガイドでyq、Python、Node.js、Goを扱っています。
他のツールより優れている点
ほとんどのYAML変換ツールは、パーサーを薄く包んだだけの同じものです。違いが出るのはこの部分です。
本当の問題を指摘するエラー
多くの変換ツールは、閉じられていない括弧に対して「インデントが不正です」と答え、間違った行を指します。このツールはどの区切り文字が閉じられていないか、どこで開かれたか、どう直すかを、該当行のマーカーとともに示します。
YAML 1.1の警告
country: no はYAML 1.2では文字列「no」、YAML 1.1では真偽値falseです。バージョン間で意味が変わる値はすべて、各バージョンが生成する値とともに警告されます。
マルチドキュメントに正しく対応
KubernetesやHelmの出力はほぼ必ず --- で区切られています。JSON配列またはJSON Linesに変換し、見つかったドキュメント数も表示します。
マージキーの解決
Docker Compose、GitLab CI、Ansibleは <<: *defaults に依存しています。マージキーはデフォルトで解決されるため、文字どおりの「<<」キーではなく期待どおりの値が得られます。
ブラウザの外に出ない
データを送信する変換エンドポイントは存在しません。ネットワークタブを開いて確認するか、回線を切ってみてください — ページはそのまま変換を続けます。
アカウント不要、制限なし
登録の壁も、変換回数の計測も、「シェアして解除」もありません。貼り付けるだけです。
YAMLとは?
YAML(「YAML Ain’t Markup Language」)は、人が書いて読むために設計されたデータ形式です。括弧の代わりにインデント、コメント、再利用可能なブロックを備えています。そのため設定ファイルの標準になりました — Kubernetes、Docker Compose、GitHub Actions、AnsibleはすべてYAMLです。その代償が曖昧さです。空白が意味を持ち、引用符のない値は思わぬ解釈をされることがあります。
JSONとは?
JSON(JavaScript Object Notation)は機械のために作られた、より厳格でコンパクトな形式です。波括弧と角括弧、常に引用符で囲まれた文字列、コメントなし、曖昧さなし。この厳格さこそが変換する理由です — どの言語もJSONを同じように解析するため、JSONに変換したYAMLはAPIでもテストフィクスチャでもログパイプラインでも同じように振る舞います。
YAMLとJSONの比較
| 項目 | YAML | JSON |
|---|---|---|
| コメント | あり(#) | なし |
| 構造の表現 | インデント | 波括弧と角括弧 |
| 再利用 | アンカー、エイリアス、マージキー | なし — 値を繰り返す |
| 文字列の引用符 | 通常は省略可 | 常に必須 |
| 主な用途 | 人が書く設定ファイル | 機械間のデータ交換 |
YAML→JSONの変換例
以下の例はすべて上のツールで正しく変換できます。特に戸惑いやすいケースを取り上げています。
ネストしたマッピングとシーケンス
インデントはネストになり、「-」のリストはJSON配列になります。
YAML
name: api
replicas: 3
ports:
- 80
- 443
resources:
limits:
memory: 512MiJSON
{
"name": "api",
"replicas": 3,
"ports": [80, 443],
"resources": {
"limits": { "memory": "512Mi" }
}
}アンカー、エイリアス、マージキー
JSONには参照を表す手段がないため、アンカーはその場で展開されます。
YAML
defaults: &defaults
restart: always
logging: json
web:
<<: *defaults
image: nginx
worker:
<<: *defaults
image: redisJSON
{
"defaults": {
"restart": "always",
"logging": "json"
},
"web": {
"restart": "always",
"logging": "json",
"image": "nginx"
},
"worker": {
"restart": "always",
"logging": "json",
"image": "redis"
}
}複数ドキュメント
--- で区切られたストリームはJSON配列に — 1行1オブジェクトが良ければJSON Linesにもできます。
YAML
apiVersion: v1
kind: Service
---
apiVersion: apps/v1
kind: DeploymentJSON
[
{ "apiVersion": "v1", "kind": "Service" },
{
"apiVersion": "apps/v1",
"kind": "Deployment"
}
]機密データでも安全ですか?
はい。しかも私たちの言葉を信じる必要はありません。これは静的なページです。サーバー側の変換エンドポイントは存在しないため、YAMLの送信先そのものがありません。パーサーはタブ内で動くJavaScriptです。
1分以内に確認する方法が2つあります。ブラウザの開発者ツールを開き、ネットワークタブに切り替えて何かを変換してください — データを運ぶリクエストは見当たらないはずです。あるいはページを読み込んだ後にインターネットを切断し、そのまま変換を続けてください。必要なものはすべてローカルにあるため、すべて動き続けます。
これは見た目以上に重要です。人気のある変換ツールのいくつかは「URLから読み込み」や「保存して共有」機能を提供しており、これは必然的にコンテンツをそのサーバー経由で送ります。少なくとも1つは共有ドキュメントをデフォルトで公開状態にします。設定ファイルは、ホスト名や内部パス、時には秘密情報を含むまさにそういう種類のものです。
よくある質問
このYAML→JSON変換ツールは無料ですか?
はい、完全に無料です。登録もアカウントも利用制限も有料化の壁もありません。このページのすべての機能を、誰でもいつでも使えます。
データはサーバーにアップロードされますか?
いいえ。変換はブラウザ内でJavaScriptによって実行されます。YAMLがどこかに送信されることはありません — サーバー側の変換エンドポイントも、ログも、貼り付けた内容の解析もありません。変換中にブラウザのネットワークタブを開くか、インターネットを切断して確認できます。ページはそのまま動き続けます。
YAMLをJSONに変換するのに何かインストールが必要ですか?
いいえ。これはオンラインのYAML→JSON変換ツールで、すでに開いているブラウザのタブで動きます。ダウンロードもコマンドラインツールも拡張機能も不要です。オンライン変換ツールはどこで変換を行うかを決めなければなりません — 多くはドキュメントをサーバーに送りますが、このツールはあなたの端末内に留めます。スクリプトで変換したい場合は、ガイド「コードでYAMLをJSONに変換する」でコマンドライン、Python、Node.js、Goを扱っています。
ファイルサイズの制限はありますか?
人為的な上限はありません。変換はお使いの端末で行われるため、実質的な制限は端末のメモリです。数メガバイトのファイルは問題なく変換できます。非常に大きなドキュメントでは、解析中にページが一時的に止まることがあります。
JSONをYAMLに戻せますか?
はい。2つのペインの間にある入れ替えボタンでページを離れずに方向を反転できます。専用のJSON→YAML変換ツールもあります。入れ替えると現在の出力が新しい入力として引き継がれるため、ドキュメントを往復変換できます。
YAMLのコメントはどうなりますか?
JSONにはコメントの構文がないため削除されます。変換ツールは黙って捨てるのではなく、いくつ削除したかを表示します。コメントを残す必要がある場合は、YAMLをその場で整形しコメントを保持するYAMLフォーマッターを使ってください。
マルチドキュメントYAMLはどう扱われますか?
--- でドキュメントを区切ったファイルは完全にサポートされています。すべてのドキュメントを含むJSON配列として出力するか、1行に1つのコンパクトなJSONオブジェクトを並べるJSON Lines(NDJSON)として出力できます。後者はkubectlや多くのログパイプラインが期待する形式です。KubernetesのマニフェストやHelmの出力は通常マルチドキュメントです。
アンカー、エイリアス、マージキーはサポートされていますか?
はい。JSONには参照を表す手段がないため、アンカー(&name)とエイリアス(*name)は完全な値に展開されます。マージキー(<<)はデフォルトで解決されます。Docker Compose、GitLab CI、Ansibleのファイルはこれに依存しています。生の << キーを見たい場合はマージの解決をオフにできます。
YAML 1.1と1.2の違いは何ですか?
YAML 1.2は引用符のない no、yes、on、off などの値を通常の文字列として扱います。YAML 1.1はこれらを真偽値として扱うため、country: no は false になります。YAML 1.1はさらに 022 を8進数の18として、12:30 を60進数の750として読みます。この変換ツールはデフォルトでYAML 1.2を使い、ドキュメント内の値が1.1では異なって読まれる場合に警告します。
なぜYAMLがインデントエラーで失敗するのですか?
最も多い原因は2つです。YAMLが完全に禁止しているタブ文字によるインデントと、title: foo: bar のようなコロンを含む引用符なしの値です。閉じられていない括弧や引用符も、多くのパーサーではインデントエラーとして現れます。この変換ツールはそれらを個別に検出し、閉じられていない区切り文字を指し示します。
この変換ツールはYAMLを検証しますか?
はい。ドキュメントを解析できない場合、問題の平易な説明、正確な行と列、修正案、そしてエディタ上の該当行のマーカーが表示されます。専用のYAMLバリデーターページは同じエンジンで、出力ペインを診断に特化させたものです。
このページはオフラインでも動きますか?
一度読み込めば動きます。変換に必要なものはすべてブラウザ内にあるため、接続が切れてもツールは動き続けます。
YAMLをJSONに変換する
YAMLをJSONに変換するには?
このページ上部の変換ツールの左ペインにYAMLを貼り付けてください。ブラウザ内で入力と同時にオンラインで変換されるため、押すボタンもアップロードもありません。インデントを2スペース、4スペース、タブ、圧縮から選び、必要ならキーをソートして、JSONをコピーするか .json ファイルとしてダウンロードします。ドキュメントを解析できない場合は、空の出力ペインではなく、正確な行と列、平易な説明、修正案が表示されます。繰り返し行う変換なら、ターミナルで yq -o=json input.yaml が同じ仕事をします。
YAMLファイルをJSONファイルに変換するには?
「アップロード」を押して .yaml または .yml ファイルを選ぶか、このページのどこかにドラッグしてから「ダウンロード」を押すと、結果が .json ファイルとして保存されます。ファイルはブラウザが読み取り、どこにも送信されません。ホスト名やレジストリ、認証情報を含む設定ファイルでは重要な点です。シェルからなら yq -o=json input.yaml > output.json、ディレクトリ全体なら for f in *.yaml; do yq -o=json "$f" > "${f%.yaml}.json"; done で一括変換できます。
YAMLはJSONに変換できますか?
ほぼすべてのケースで可能です。YAML 1.2はJSONのスーパーセットとして定義されており、通常のマッピング、シーケンス、文字列、数値、真偽値、nullで構成されたYAMLドキュメントには正確なJSONの対応物があります。変換で失われるのは4つです。JSONに構文がないコメント。JSONは参照を表せないため完全な値に展開されるアンカーとエイリアス。日付やネストした構造など、JSONが許さない文字列以外のマッピングキー。そして !Ref や !GetAtt のような、固有のツールの外では意味を持たないカスタムタグです。この変換ツールはこれらを黙って捨てず、それぞれ報告します。
YAMLは有効なJSONですか?
逆です。JSONは有効なYAMLですが、YAMLは一般に有効なJSONではありません。YAML 1.2の仕様はこの言語をJSONのスーパーセットと定義しているため、どんなJSONドキュメントもそのままYAML 1.2パーサーに渡せます — 上のYAMLペインにJSONを貼り付けても解析されます。YAMLドキュメントが有効なJSONになるのは、JSONのフロースタイルですべてのキーと文字列を引用符で囲み、コメントを含まない場合だけです。通常のインデントベースのYAMLはどのJSONパーサーにも拒否されます。なおこの保証はYAML 1.2に対するものです — PyYAMLや古いツールが実装するYAML 1.1はJSONの厳密なスーパーセットではありません。
YAMLとJSONの比較
YAMLとJSONの違いは何ですか?
JSONは機械向けの厳格な交換形式で、YAMLは同じデータを表現できる人向けの設定形式です。具体的には、YAMLはインデントから構造を得るのに対しJSONは波括弧と角括弧を使います。YAMLは # によるコメントをサポートしますがJSONにはコメントがありません。YAMLはアンカー、エイリアス、マージキーでブロックを再利用できますがJSONはすべての値を丸ごと繰り返します。YAMLは --- で区切って1ファイルに複数のドキュメントを持てますがJSONはちょうど1つの値です。そしてYAMLは通常文字列を引用符なしで書けますが、country: NO が false と読まれるまでは便利です。YAML 1.2はJSONのスーパーセットなので、JSONで表現できるものはYAMLでも表現できます。
YAMLとJSONはどう使い分けるべきですか?
人がファイルを書いて保守するならYAML、機械が書くか読むならJSONです。YAMLはコードレビューで読まれる設定で元が取れます — Kubernetesマニフェスト、Docker Compose、GitHub Actionsワークフロー、Ansibleプレイブック、OpenAPI仕様など。コメントで値を説明でき、アンカーで繰り返しを減らせるからです。JSONはAPIのリクエスト・レスポンスボディ、ログ行、テストフィクスチャ、大量に生成・保存されるあらゆるもので元が取れます。解析が速く、どの言語にもパーサーがあり、間違えやすい意味のある空白も、議論になるバージョンの曖昧さもありません。両方の理由が当てはまるなら、通常の答えはYAMLで書いてビルド時にJSONに変換することで、このページ上部の変換ツールはそのためにあります。
可読性と使いやすさでYAMLとJSONはどう違いますか?
YAMLは読みやすく正しく書くのが難しい。JSONは冗長ですがはるかに予測可能です。可読性では、ネストした設定でYAMLが明らかに勝ります。閉じ括弧なし、すべてのキーを引用符で囲む必要なし、置き間違えるカンマなし、自明でない値を説明するコメントあり — 同じKubernetesマニフェストはJSONよりYAMLの方が約40%短くなります。使いやすさでは逆転します。インデントが意味を持つため、迷い込んだタブや揃っていない兄弟キーがドキュメントを壊します。引用符のない値は黙って型が変わります(yes、no、on、off、022、12:30)。重複キーとYAML 1.1と1.2の分裂は、正常に解析されるのに誤って動作するファイルを生みます。そしてYAMLパーサーのエラーは本当の問題の場所について悪名高いほど曖昧です。JSONにはこれらの失敗モードが一切ないため、実務的な立場は「YAMLで書き、出荷前に検証または変換する」です。