ツール説明
JSON と YAML の相互変換ツールについて
このコンバーターは JSON を YAML に、YAML を JSON に相互変換します。同じ設定を API のペイロードと Kubernetes マニフェスト、Docker Compose ファイル、GitHub Actions のワークフロー、OpenAPI ドキュメントの間で、打ち直すことなく行き来させられます。
変換は入力しながら実行され、キーの順序は書いたとおりに保持されます。インデントは 2 スペースまたは 4 スペースを選択でき、構文エラーは行と列を正確に示します。
JSON to YAML の変換手順
- 入力パネルに JSON を貼り付けます。ボタンを押さなくても YAML の結果がすぐに表示されます。
- 方向切り替えボタンで YAML から JSON へ切り替えられます。JSON しか読めないスクリプトにマニフェストを渡したいときなどに使います。
- リポジトリのスタイルに合わせて 2 スペースか 4 スペースのインデントを選びます。Kubernetes や GitHub Actions のファイルでは通常 2 を使います。
- 入力が不正な場合は表示された行と列を確認して該当箇所を直してください。出力は自動的に更新されます。
こんなときに使えます
- kubectl が出力した JSON リソースを、コミットできる読みやすい YAML マニフェストに変換する。
- 生成された設定を検証しながら Docker Compose のサービス定義ブロックを変換する。
- OpenAPI 仕様を JSON 形式と YAML 形式の間で移す。ツールによってどちらか一方を好むためです。
- JSON として生成された GitHub Actions ワークフローの断片を、ランナーが期待する YAML に書き換える。
変換を壊す YAML のルール
YAML 1.2 は JSON のほぼ上位互換であるため、妥当な JSON は通常そのまま妥当な YAML になります。問題は逆方向で起きます。YAML は JSON が決して行わない型の推測をするからです。
- ノルウェー問題:NO、no、yes、on、off は YAML 1.1 系パーサーでは真偽値として解釈されるため、国コードの NO が false になります。こうした値は引用符で囲んでください。
- 先頭のゼロ: 010 のような値は文字列ではなく 8 進数として読まれることがあります。識別子や郵便番号、品番は引用符で囲んでください。
- バージョン番号: 引用符のない 1.10 は浮動小数点数の 1.1 になり、末尾のゼロが消えます。
- インデントにはタブではなく必ずスペースを使い、値を導くコロンの後には必ずスペースが必要です。
JSON から YAMLのよくある質問
- コンバーターはキーの順序を並べ替えますか
- いいえ。キーは入力したとおりの順序で出力されるため、バージョン管理上の差分が小さく保たれます。
- コメントはどうなりますか
- JSON にはコメント構文がないため、JSON から YAML への変換でコメントが生成されることはなく、YAML から JSON への変換では元のコメントが失われます。コメントが重要な場合は元のファイルを残しておいてください。
- 出力にアンカーやエイリアスは含まれますか
- いいえ。繰り返し現れる構造もすべて展開して書き出されるため、エイリアス非対応のパーサーでも結果を読めます。
- 設定内容はどこかにアップロードされますか
- いいえ。解析と変換は js-yaml を使ってブラウザー内で行われるため、貼り付けた内容が端末の外に出たり、wetool.site に保存されたりすることはありません。
- 変換後に YAML の値の型が変わるのはなぜですか
- YAML は引用符のないスカラーの型を推測します。YAML 側で値を引用符で囲めば、JSON の文字列に変換されます。
JSON と YAML の比較
JSON は厳密で曖昧さがないため通信フォーマットとして優れていますが、コメントを書けず、入れ子が深くなると読みにくくなります。YAML はレビュー時に読みやすい一方で、型の推測とインデントへの敏感さという代償があります。多くのチームは設定を YAML で保持し、境界では JSON をやり取りします。この双方向変換はまさにそのためのものです。
コミット前の引用符チェックリスト
変換が原因で壊れたデプロイの多くは、型が変わってしまった値に起因します。YAML の出力を次の観点で見直してください。
- 国コードや言語コード、特に NO をはじめとする、単語のように読める 2 文字の値。
- 実は識別子である数値。口座番号やゼロ埋めされたポート番号など、先頭にゼロが付くものすべて。
- 1.10 や 3.20 のようなバージョンやイメージタグ。浮動小数点数として扱われると末尾のゼロが失われます。