JSON→YAML変換
JSONを一瞬で読みやすいYAMLに変換します。
ブラウザ内で動作します。入力した内容はどこにも送信されません。
- ネストと型を保持
- 入力するたびに変換
- アップロードなし
JSONをYAMLに変換する方法
- JSONを貼り付けるかアップロードします。
- 入力するとYAMLが表示されます。
- コピーするか.yamlファイルをダウンロードします。
JSONからYAMLへの変化
- 波括弧とカンマがなくなり、代わりにインデントで構造を表します。
- プロパティ名はクォートを失いますが、コロンなどYAMLがクォートを必要とする文字を含む場合は除きます。
- JSON配列は、キーの下にインデントされた、項目ごとのハイフン付きの行のリストになります。
- true、false、nullはどちらの形式でも同じ単語で書かれます。
一部のYAML値がクォートを保持する理由
| JSONの値 | 出力形式 | 理由 |
|---|---|---|
| "007" | '007' | クォートなしの007は数値の7として読まれるため |
| "yes" | 'yes' | 一部のYAMLリーダーはクォートなしのyesやnoを真偽値として扱うため |
| "null" | 'null' | クォートなしのnullはnull値として解釈されるため |
| "2024-01-01" | '2024-01-01' | 一部のリーダーはクォートなしの日付を日付型として解釈するため |
YAMLが使われる場面
- Docker Composeファイル
- Kubernetesマニフェスト
- GitHub Actionsのワークフローファイル
- Ansibleのplaybook
JSON→YAMLが役立つ場面
- 書き出した設定ファイルを、デプロイツールが実際に読み込む設定形式に変える。
- 2つのバージョンを比較する前に、APIレスポンスをひと目で見やすくする。
- 既存のJSONデータから、Helmチャートなどのvaluesファイルの下書きを作る。
JSON→YAMLのFAQ
JSONの代わりにYAMLを使う理由は?
YAMLはほとんどの括弧やクォートを省き、代わりにインデントを使うため、Docker Compose、Kubernetes、GitHub Actionsなどの設定ファイルが手作業で読み書きしやすくなります。
一部の値がクォートで囲まれているのはなぜですか?
クォートがないと別の意味に読まれてしまう文字列はクォートを保持します。例えば'007'は数値の7ではなくテキストのままになり、'yes'も文字列のままになります。
YAMLにコメントを追加できますか?
JSONにはコメントがないため、引き継ぐものはありません。変換後に自分で#を使ってコメントを追加できます。
どのYAML方言で出力されますか?
標準的なYAML 1.2で、多くのNode.jsビルドツールが設定ファイルの読み書きに使うjs-yamlライブラリによって生成されます。
キーの順序は保持されますか?
はい。キーはJSONオブジェクトに現れるのと同じ順序で書き出されるため、両者の差分も追いやすくなります。
トップレベルのJSON配列も変換できますか?
はい。トップレベルの配列は、キーと値のマッピングではなく、ハイフン付き項目のYAMLシーケンスになります。
深くネストしたオブジェクトやオブジェクトの配列も扱えますか?
はい。どんな深さのネストも正しく変換され、js-yamlの標準スタイルに従って各階層が親より2スペース深くインデントされます。
時刻やURLのようにコロンを含む値はどうなりますか?
値全体がクォートで囲まれます。クォートなしでコロンの後にスペースがあると、新しいキーの始まりのように見えてしまうためです。