YAML to JSON コンバーター
YAMLを貼り付けるだけで即座にJSONを取得。ブラウザ内でリアルタイム変換。K8sマニフェスト・OpenAPI仕様・Helm valuesに対応。100%プライベート、データは送信されません。
JSONとは何ですか?
JSON(JavaScript Object Notation)は軽量のテキストベースのデータ交換フォーマットで、RFC 8259およびECMA-404として標準化されています。文字列・数値・ブール値・null・配列・オブジェクトの6つのデータ型をサポートし、ほぼすべてのプログラミング言語・API・ツールチェーンがネイティブに解析できる厳密で最小限の構文を持ちます。YAMLは人間が書く設定ファイル(Kubernetesマニフェスト・GitHub Actions・Ansibleプレイブック・Helm values)に好まれるフォーマットですが、JSONはAPI・自動化スクリプト・プログラム的なデータ処理のための汎用のマシン可読フォーマットです。
したがってYAMLをJSONに変換することはDevOpsやバックエンド開発で最もよくある作業の一つです — YAML設定ファイルがあるが、REST APIへの入力・jqでのクエリ・JavaScriptツールでの処理のためにJSONが必要になります。
典型的なオンラインコンバーターと比較して、このツールには4つの重要な差別化ポイントがあります。
**1. 複数ドキュメントYAMLの処理。** YAMLは1つのストリームに複数のドキュメントを含めることができ、---(ドキュメント開始マーカー)で区切られます。多くの実際のYAMLファイル(一部のKubernetesマニフェストやAnsibleプレイブックを含む)は複数のドキュメントを含みます。このツールはeemeli/yamlライブラリのparseAllDocumentsを{ version: '1.2', merge: true }オプションで使用し、最初のドキュメントのJSONを返し、取得したものを明確に伝えます。すべてのドキュメントが必要な場合は---で分割して各セクションを個別に変換してください。
**2. アンカーとエイリアスの展開。** YAMLアンカー(&name)とエイリアス(*name)はデータブロックの再利用を可能にします — JSONには同等の概念がない強力なYAML機能です。このツールはすべてのアンカーとエイリアス(マージキー:<<: *anchorを含む)を完全に展開し、JSON出力が参照なしの完全な自己完結データを含むようにします。JSONには参照構文がないため、これは常に正しい変換です。eemeli/yamlライブラリの安全な展開は循環参照保護も含んでいます。逆方向の変換については JSON to YAMLコンバーター をご覧ください。
**3. コメントの損失 — 透明な説明。** YAMLは#コメントをサポートし、Kubernetesマニフェスト・Helm values・Ansibleプレイブックでは意図を文書化するためによく使われます。JSONにはコメント構文がないため、コメントは変換時に永久に失われます。これはバグではなく、フォーマット間の根本的な差異です。このツールはこれを明示的に示し、期待される動作を把握できるようにします。コメントを保持する必要がある場合は、変換前にJSONフィールド(_commentキーや専用のmetadataオブジェクト)としてエンコードするか、YAMLを権威あるソースとして保持してください。詳細は YAML の Norway 問題とJSON-YAML変換の差異 をご覧ください。
**4. 100%ブラウザベースのプライバシー。** あなたのYAMLデータ(Kubernetesのシークレット・データベース認証情報・パスワードを含むHelm values・内部サービス設定を含むことが多い)はブラウザを離れることはありません。データはどのサーバーにも送信されません。ブラウザの「ネットワーク」タブで確認できます。JSONに変換した後は、下流で使用する前に JSON整形ツール で結果を検証・整形できます。
YAMLの豊かさ(コメント・アンカー・複数ドキュメントサポート・ブロックスカラー)は人間が作成した設定ファイルに最適で、可読性とドキュメントが重要です。JSONの厳密さと汎用性は、マシンが主な消費者の場合により良い選択です。このコンバーターは2つの世界を橋渡しします:人間のメンテナビリティのためにYAMLで設定を保持し、マシン可読の交換フォーマットが必要なときにJSONに変換します。
// Convert YAML to JSON in Node.js using the eemeli/yaml library
import { parseAllDocuments } from 'yaml';
const yamlString = `apiVersion: apps/v1
kind: Deployment`;
// parseAllDocuments handles multi-document YAML (--- separator)
// version: '1.2' ensures yes/no are strings, not booleans
// merge: true expands anchor/alias merge keys (<<: *anchor)
const docs = parseAllDocuments(yamlString, { version: '1.2', merge: true });
// Take the first document (skip additional --- blocks)
const json = JSON.stringify(docs[0].toJSON(), null, 2);
console.log(json);
// {
// "apiVersion": "apps/v1",
// "kind": "Deployment"
// } 主な機能
リアルタイム変換
YAMLを入力・貼り付けるとJSON出力が即座に更新されます — 「変換」ボタンは不要です。大きな入力(>200KB)はブラウザのレスポンスを維持するために自動的に手動モードに切り替わります。
2または4スペースインデント
JSON出力のインデントを2スペースと4スペースで切り替えられます。2スペースはほとんどのツールとAPIの標準形式で、4スペースは一部のスタイルガイドやエディタのデフォルトに合わせています。
複数ドキュメントのサポート
---で区切られた複数のドキュメントを含むYAMLストリームを処理します。最初のドキュメントをJSONに変換して返します。Kubernetesの複数リソースファイルやAnsibleプレイブックに便利です。
アンカーとエイリアスの展開
YAMLアンカー(&name)とエイリアス(*name)を完全に展開し、マージキー(<<: *anchor)も含みます。JSON出力には参照なしの完全な参照解除済みデータが含まれます — JSONには同等の概念がないため、これが正しい動作です。
100%ブラウザベースのプライバシー
すべての変換はJavaScriptを使用してブラウザ内でローカルに実行されます。シークレット・認証情報・本番設定を含むYAMLデータはどのサーバーにも送信されず、記録されず、保存されません。
K8s・Compose・Helm・OpenAPIファイルに対応
実際のDevOpsユースケースに最適化:Kubernetesマニフェスト・Docker Composeスタック・Helm chartのvalues・GitHub Actionsワークフロー・OpenAPI仕様・Ansibleプレイブック — それぞれのサンプル付きです。
サンプル
Kubernetesマニフェスト
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 Kubernetes DeploymentマニフェストをYAMLからJSONに変換します — jqでのクエリ・Kubernetes APIへの送信・TerraformやCI/CDパイプラインへの入力に役立ちます
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 YAMLをJSONに変換し、プログラム的な操作・自動化スクリプトへの入力・JavaScriptツールでの処理に使用します
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ワークフロー YAMLをJSONに解析し、特定フィールドのクエリ・構造の検証・JSONを受け付けるAPIとの統合に使用します
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仕様をYAMLからJSONに変換し、クライアントコードジェネレーター・APIテストツール・プログラム的なスキーマ検査に使用します
Helm values.yaml
replicaCount: 3
image:
repository: my-app
tag: 1.0.0
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
className: nginx
hosts:
- host: my-app.example.com
paths:
- path: /
pathType: Prefix
resources:
requests:
memory: 64Mi
cpu: 250m
limits:
memory: 128Mi
cpu: 500m
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80 Helm chartのvalues.yamlをJSONに変換し、分析・レポート生成・JSON設定を期待するツールへの入力に使用します
Ansible Playbook
- name: Configure web servers
hosts: webservers
become: true
vars:
http_port: 80
max_clients: 200
tasks:
- name: Ensure nginx is installed
ansible.builtin.package:
name: nginx
state: present
- name: Start nginx service
ansible.builtin.service:
name: nginx
state: started
enabled: true
- name: Copy nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
notify:
- Restart nginx
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted Ansible playbook YAMLをJSONに解析し、タスク構造の検査・設定の監査・レポートパイプラインとの統合に使用します
使い方
- 1
YAMLを貼り付ける
上の入力欄にYAMLデータを入力または貼り付けてください。「サンプルを読み込む」をクリックして、Kubernetes Deployment・Docker Composeファイル・Helm values.yamlなどのサンプルを試すこともできます。
- 2
JSON出力をリアルタイムで確認
JSONは即座に出力パネルに表示されます。オプション(インデント2または4スペース)を調整して、対象ツールの要件に合わせてください。
- 3
コピーまたはダウンロード
「コピー」でJSONをクリップボードに取得するか、「ダウンロード」でjq・APIコール・その他の下流ツールにすぐ使える.jsonファイルとして保存してください。
よくあるYAMLの問題
タブインデント
YAML仕様はインデントにタブ文字を禁止しています — スペースのみが許可されています。YAMLがタブを使用するエディタで書かれたりコピーされたりした場合、パーサーはエラーをスローします。すべてのタブインデントをスペース(1レベルにつき2または4スペース)に置き換えてください。
services: web: image: nginx:1.25-alpine
services:
web:
image: nginx:1.25-alpine インデントの不一致
YAMLはネストを定義するために一貫したインデントを使用します。同じブロック内で異なるスペース数を混在させると(例:あるレベルで2スペース、別のレベルで3スペース)、パースエラーが発生します。ドキュメント全体で各レベルは同じスペース数でインデントする必要があります。
metadata: name: my-app namespace: production
metadata: name: my-app namespace: production
引用符なしの特殊文字
コロン(:)・ハッシュ(#)・&・*・{・}・[・]・|・>・!・@はYAMLで特殊な意味を持ちます。これらを値内で引用符なしで使用するとパースエラーや予期しない動作を引き起こす可能性があります。これらの文字を含む値はシングルまたはダブルクォートで囲んでください。
url: http://example.com:8080/api tag: #latest
url: 'http://example.com:8080/api' tag: '#latest'
アンカーの循環参照
YAMLは技術的に自分自身を参照するアンカー(循環参照)を許可しますが、実際には稀です。循環アンカーはパーサーを無限展開ループに入らせます。eemeli/yamlライブラリはハングするのではなく、循環アンカーに対してエラーを検出してスローします。
# Circular anchor (rare but possible) base: &base parent: *base
# Use explicit fields instead of circular references base: parent: null
複数ドキュメントの混乱
複数の---セパレーターを持つYAMLファイルには複数のドキュメントが含まれます。このツールは最初のドキュメントのJSONのみを返します。後のドキュメント(2番目または3番目の---の後)のデータを期待していた場合、出力には表示されません。すべてのドキュメントが必要な場合は---でYAMLを分割してから各セクションを個別に変換してください。
# Only the first document is converted apiVersion: v1 kind: ConfigMap --- apiVersion: v1 kind: Secret
# Convert each document separately apiVersion: v1 kind: ConfigMap
コメントの損失
YAMLは#コメントをサポートしますが、JSONはサポートしません。すべてのYAMLコメントは変換時に永久に失われます — これはフォーマット間の根本的な差異であり、ツールの制限ではありません。JSONでコメント情報を保持する必要がある場合は、_commentキーやmetadataオブジェクトなどの専用フィールドとしてエンコードしてください。
# This comment will be lost replicas: 3 # scale this up for production
replicas: 3 _comment: scale this up for production
よくある使用場面
- Kubernetesマニフェストの分析
- Kubernetes YAMLマニフェストをJSONに変換し、jqでのクエリ・Kubernetes REST APIへの送信・Terraformデータソースでの処理・JSONを期待するCI/CDパイプラインへの入力に使用します。
- Docker ComposeからJavaScriptツールへ
- Docker Compose YAMLをJSONに解析して、自動化スクリプト・依存グラフ・Node.jsツールで使用するためのサービス定義・イメージ名・ポートマッピング・環境変数を抽出します。
- GitHub Actions APIとの統合
- GitHub Actionsワークフロー YAMLをJSONに変換し、プログラム的に構造を検証したり、ジョブとステップの定義を抽出したり、JSONワークフロー仕様を受け付けるCI/CD APIと統合したりします。
- OpenAPIからクライアントコード生成へ
- 多くのコードジェネレーター(openapi-generator・swagger-codegen・oazapfts)はどちらの形式のOpenAPI仕様も受け付けます。ツールが特にJSON入力を必要とする場合や、JSON Schemaバリデーターで検査する必要がある場合に、YAML仕様をJSONに変換します。
- Helm Valuesの分析
- Helm chartのvalues.yamlをJSONに変換し、レポートの生成・環境間のvalueの比較・ポリシー適用ツールへの入力・JSON設定を期待する自動化での処理に使用します。
- JSONベースのツールへの設定移行
- アプリケーション設定をYAML(インフラツールで一般的)からJSONに移行し、JavaScript環境・REST API・AWS AppConfig・Azure App Configuration・JSONで設定を保存するあらゆるシステムで使用します。
技術的詳細
- merge:trueのparseAllDocumentsによるYAML 1.2仕様
- YAMLはeemeli/yamlライブラリ(v2.8+、CVE安全)を使用してparseAllDocumentsと{ version: '1.2', merge: true }で解析されます。YAML 1.2スキーマはyesやnoなどの裸の文字列が文字列として扱われること(ブール値ではなく)を保証し、現行のYAML仕様に一致します。merge: trueオプションはアンカー/エイリアスのマージキー(<<: *anchor)を完全に展開し、JSON出力が完全な参照解除済みデータを含むようにします。複数ドキュメントYAML(---区切り)は最初のドキュメントを返します。
- ライブラリによるアンカーとエイリアスの展開
- eemeli/yamlライブラリは循環参照検出を含む安全なアンカー(&name)とエイリアス(*name)の展開を処理します。すべての参照されたデータブロック(マージキーの展開を含む)はJSON出力に完全にインライン化されます。JSONには参照やアンカーの概念がないため、これが正しい変換です。ライブラリの安全な展開は不正なYAMLによる無限ループを防ぎます。
- ブラウザベース — アップロードなし、サーバーなし
- すべての処理はブラウザのJavaScriptエンジン内で完結します。データはいかなる時点でもネットワーク経由で送信されません。200KBを超える入力はリアルタイムモードから手動モードへ自動的に切り替わります(明示的な「変換」クリックが必要)。ブラウザのレスポンスを維持し、重いシリアライゼーション中にメインスレッドがブロックされるのを防ぐためです。
ベストプラクティス
- クリーンな変換のためにYAML 1.2互換の構文を使用する
- YAML 1.2の慣習でYAMLを作成してください — yes・no・on・off・y・nの文字列値に明示的に引用符を付け(例:enabled: 'yes')、曖昧さを避けます。このツールはYAML 1.2スキーマで解析します(これらは文字列)が、パイプライン内の古いツールはYAML 1.1を使用する可能性があります(ブール値として扱われる)。ソースYAMLで明示的に引用符を付けることが、すべてのパーサーに対して最も安全な実践です。
- 精度を保持するためにYAML内の大きな数値をクォートする
- JavaScriptは2^53 - 1(9007199254740991)より大きな整数を正確に表現できません。KubernetesのresourceVersionとuidなどのフィールドはサーバー側でint64であり、この制限を超える可能性があります。YAMLソース内でこれらの値をクォートし(resourceVersion: '9007199254740993')、パーサーが文字列として扱い、JSON出力でも文字列値として正確に保持されるようにしてください。
- APIで使用する前にJSON出力を検証する
- YAMLをJSONに変換した後は、APIに送ったり保存したりプログラム的に処理する前に結果を検証してください。JSON整形ツールを使って構造が正しいことを確認してください。これはKubernetes APIコール・OpenAPI仕様・JSON Schemaで検証されるペイロードで特に重要で、構造エラーは変換ステップではなくAPIレイヤーでわかりにくい拒否を引き起こします。
- 変換前に複数ドキュメントYAMLを分割する
- YAMLファイルに複数の---区切りドキュメントが含まれていてすべてをJSONとして必要とする場合は、まずファイルを---で分割してから各ドキュメントを個別に変換してください。このツールは最初のドキュメントのみを取得します。シンプルな方法:エディタまたはawkを使って'\n---\n'で分割し、各セクションを別々に貼り付けます。
- 下流のJSON処理にjqを使用する
- YAMLからJSONを取得したら、jqがコマンドラインでクエリおよび変換する最速の方法です。このツールとjqを組み合わせて使います:YAMLをオンラインで変換し、JSONを貼り付け、jq '.spec.replicas'やjq '.services | keys'を使って必要なものを正確に抽出します。多くのファイルのバッチ処理には-o jsonフラグ付きのyq CLIを直接使用してください。
よくある質問
オンラインでYAMLをJSONに変換するには?
このツールは複数ドキュメントYAML(---セパレーター)をどう処理しますか?
YAMLのアンカーとエイリアス(&anchorと*alias)はどう処理されますか?
YAMLのコメントはJSON出力に保持されますか?
このツールでKubernetesマニフェストを処理するには?
このツールはDocker Composeファイルにどう役立ちますか?
YAML 1.1とYAML 1.2の違いは何ですか?このツールはどちらを使いますか?
YAMLがタブインデントを禁止しているのはなぜですか?
YAMLをJSONに変換するときに大きな数値の精度が失われますか?
コマンドラインでYAMLをJSONに変換するには?
このツールを使うとYAMLデータがサーバーに送信されますか?
YAML入力にファイルサイズの制限はありますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
JSONフォーマッター&バリデーター
エンコーディングとフォーマット
無料オンラインJSON整形ツール。ブラウザ上でJSONのフォーマット、構文検証、圧縮を即座に実行。エラー検出、ワンクリックコピー対応。データは端末外に送信されず、100%プライバシー保護。
JSON to YAML コンバーター
エンコーディングとフォーマット
JSONを貼り付けるだけで即座にYAMLを取得。ブラウザ内でリアルタイム変換。K8s・Compose対応、2/4スペースインデント、Norway問題対応自動クォート。100%プライベート、データは送信されません。
URLエンコーダー&デコーダー — URL構造パーサー内蔵
エンコーディングとフォーマット
URLを貼り付けるだけで即座にエンコード・デコード。内蔵URLパーサーがプロトコル・ホスト・パス・クエリパラメータを編集可能なフィールドに分解。encodeURIとencodeURIComponentの2モード対応。完全ブラウザ動作でデータ送信なし。
進数変換ツール — 2進数・16進数・10進数・8進数
単位変換
無料オンライン進数変換ツール。2進数、8進数、10進数、16進数および任意の基数(2-36)間で数値を瞬時に変換。BigInt対応で桁数制限なし。登録不要・サーバー送信なし、すべての処理がブラウザ内で完結。コピーボタンやコードリテラル出力で開発作業を効率化。
JPEG・PNG・WebP をオンラインで圧縮 — 無料・一括対応
単位変換
無料オンライン画像圧縮ツール。JPEG、PNG、WebP 画像をブラウザ上で最大 80% 縮小。サーバーへのアップロード不要で完全プライベート。最大 20 枚の一括圧縮、品質調整、圧縮前後の比較機能を搭載。登録不要ですぐに使えます。