完全無料

YAML を JSON に 変換

YAML設定ファイルを高精度でJSONに変換します。ブラウザ上で完結するため、機密性の高い設定ファイルも安全に処理できます。

または

このツールについて

YAML と JSON は密接に関連した形式であり、JSON は技術的には YAML 1.2 の厳密なサブセットであり、通常、両者間の変換は簡単です。 YAML は、コメント、エスケープなしの複数行文字列、アンカーおよびエイリアス参照、より柔軟な引用、自然なドキュメント レイアウトに似たインデント ベースの構造など、JSON にはない人間にとって使いやすい機能を追加します。このため、構成ファイル (Kubernetes マニフェスト、GitHub Actions ワークフロー、Docker Compose) では YAML が一般的な選択肢となり、API ペイロードでは JSON が主流になります。

YAML を JSON に変換するということは、通常、YAML の人間に優しい追加機能を放棄し、機械がより簡単に解析できる形式、つまり HTTP API の共通語となる形式を使用することを意味します。コメントは削除されます (JSON にはコメントはありません)。アンカー参照は、その参照対象の値に解決されます。複数行の文字列は、改行が埋め込まれた標準の JSON 文字列に折りたたまれます。

このコンバータは、JavaScript で最も広く使用されている YAML ライブラリである js-yaml を使用して YAML を解析します。出力は、オプションのインデントを含む JSON.stringify を使用して生成されます。変換では、フロー スタイル、ブロック スタイル、スカラー、シーケンス、マッピング、アンカー、エイリアス、標準タグ タイプを含むすべての標準 YAML 1.2 構文が処理されます。

YAML を JSON に変換する理由

ほとんどの API と多くのプログラミング環境は JSON を想定しています。 JSON のみを受け入れるコードまたはサービスと統合する場合、YAML で記述された構成ファイルを JSON に変換する必要があります。 JSON 用のツールも豊富です。jq、JSON パス、JSON スキーマ、バリデーターとトランスフォーマーの広範なエコシステムはすべて JSON 入力を前提としています。

JSON は、YAML とは異なる点で明確です。 YAML の柔軟性は、驚くべき解析を生み出します。YAML 1.1 では、「no」のような文字列がブール値 false として解析され、バージョン文字列が浮動小数点数として解析され、インデント エラーがサイレント構造の変更を引き起こします。 JSON に変換すると、データは曖昧さの少ない形式に固定されます。

使い方

YAMLを貼り付けてJSONを取得します。

  1. YAML を追加する: YAML テキストを入力領域に貼り付けるか、.yml/.yaml ファイルをドロップします。 js-yaml は、完全な YAML 1.2 構文を受け入れます。
  2. 変換する: js-yaml は YAML を JavaScript オブジェクトに解析し、JSON.stringify はそれを 2 つのスペースのインデントでシリアル化します。コメントは削除され、アンカーは解決され、特殊な YAML タイプ (タイムスタンプ、バイナリ データ) は JSON 互換の表現に変換されます。
  3. 結果を確認する: JSON 構造が期待したものと一致していることを確認します。ソース YAML と比較して、YAML の緩やかな型指定により予期しない JSON 値が生成された箇所を特定します。
  4. ダウンロードまたはコピー: .json として保存するか、クリップボードにコピーします。出力は、任意の JSON パーサーで使用できる有効な JSON です。

一般的な使用例

技術的な詳細

js-yaml は、YAML 1.1 の癖 ('no'-as-false 問題、0o プレフィックスのない 8 進数) のオプションのサポートを備えた YAML 1.2 を実装します。パーサーは、ネイティブ型 (数値、文字列、ブール値、null、配列、プレーン オブジェクト) を使用して JavaScript オブジェクト ツリーを生成します。

JSON.stringify は、オブジェクト ツリーを JSON にシリアル化します。オプションのインデントにより、きれいに印刷された出力が生成されます。これがないと、結果はコンパクトな単一行 JSON になります。特別な値 (NaN、無限大、未定義) は有効な JSON ではありません。コンバーターは、存在する場合にはそれらを null に強制します。

エッジケース: YAML タイムスタンプは JSON 内の ISO-8601 文字列になります。 YAML バイナリ データ (base64 エンコード) は文字列になります。 JSON には参照構文がないため、アンカーとエイリアスは JSON 内の重複値に解決されます。

ベストプラクティス

よくある質問

YAML を JSON に変換するとコンテンツは変わりますか?
内容は可能な限り正確に保存されます。ただし、一部の形式固有の機能には直接同等の機能がない場合があるため、形式に若干の違いが発生する可能性があります。
データを JSON 形式に変換するのはなぜですか?
JSON は、Web API および JavaScript アプリケーションの標準データ形式です。人間が判読可能で、プログラミング言語で広くサポートされており、構文は XML よりも単純です。
コンバーターはネストされたまたは複雑な YAML 構造を処理しますか?
はい。このツールは、ネストされたオブジェクト、配列、およびすべての標準 YAML データ型を正しく解析し、JSON 出力内の完全なデータ構造を保持します。
この変換は安全かつ非公開ですか?
はい。すべての処理はブラウザ内でローカルに行われます。データがデバイスから離れることはありません。サーバーへのアップロード、クラウド処理、データ収集はありません。
私の YAML ラウンドトリップは問題なく行われますか?
JSON を YAML に再送信すれば、構造的にはそうです。コメントとアンカー構造は失われます。生の値は保存されます。
私のデータはサーバーにアップロードされていますか?
いいえ、js-yaml はブラウザーで実行されます。
最大サイズはどれくらいですか?
最大50MB。 js-yaml は典型的な設定ファイルを即座に処理します。非常に大きな YAML の場合、解析にかなりの時間がかかる場合があります。
マルチドキュメント YAML はサポートされていますか?
YAML は、--- で区切られた 1 つのファイル内の複数のドキュメントをサポートします。コンバーターはデフォルトで最初のドキュメントを処理します。複数のドキュメントを処理する場合は、最初に YAML を分割します。