UltKit

JSONをYAMLに変換

JSONを、人が読んでレビューし、コメントを書き込めるYAMLに書き換えます。.jsonファイルをアップロードすると、キー・値・順序をそのまま保ったインデント付きの.yamlが得られ、そのままリポジトリに追加できます。

データ変換

またはCSV, TSV, TXT … ファイルをここにドロップ ·

1ファイルあたり最大95 MB· 最大20ファイルまで· 30分後に削除

出力

ファイルは当社のサーバーで処理され、30分後に削除されます。

このツールの使い方

  1. 1

    JSONファイルを追加する

    API のレスポンス、エクスポートした設定、生成されたマニフェストを .json ファイルでアップロードします。1ファイルあたり95 MBまで、最大20ファイルです。各ファイルには有効な JSON 値が1つ含まれている必要があります。

  2. 2

    設定は初期値のままにする

    変換先では、すでに YAML が選択されています。設定ファイルであれば、ほかに変更する項目はありません。出力はスペース2つのインデントになります。

  3. 3

    変換してコミットする

    YAMLに変換 →を押して .yaml ファイルをダウンロードし、次に読む人のために必要な箇所へコメントを加えてコミットします。

回答

JSON を YAML に変換するには?

.json ファイルをアップロードして YAMLに変換 →を押します。オブジェクトはインデント付きの key: value ブロックに、配列はダッシュ付きのリストになり、YAML が誤読しかねない文字列は引用符が残ります。

設定ファイルをJSONからYAMLに変換する理由

JSON の多くはソフトウェアが出力したものです。API レスポンス、設定のエクスポート、ジェネレーターの出力などがそうです。一方、YAML の多くは人が管理します。この変換は、データが機械の出力から、チームが所有するものに変わる節目になることが多く、たとえば Git にコミットするデプロイ用マニフェスト、CI パイプライン、Ansible の変数セットなどです。

典型的なのは、クラウド API を呼び出して200行の JSON によるリソース定義を受け取り、それをインフラのコードとして管理したい場合です。変換すると波かっこやカンマのないファイルになり、1行の変更は1行の差分で済み、変わった値もコメントで説明できます。テストフィクスチャや、開発者以外が編集する翻訳ファイルでも同じです。スプレッドシートやレポート用にフラットな表が必要な場合は、JSON から CSV への変換のほうが向いています。

設定ファイルにYAMLを使うツール

変換したYAMLの主な使い道
機関要件出典
GitHub Actionsワークフローは .github/workflows に .yml または .yaml ファイルとして置きますGitHub Docs
GitLab CI/CDパイプラインはリポジトリのルートにある .gitlab-ci.yml で定義しますGitLab Docs
Docker Composeサービスは compose.yaml(旧 docker-compose.yml)に記述しますDocker Docs
Ansibleプレイブックと変数ファイルは YAML で記述しますAnsible Docs
Kubernetesマニフェストは JSON でも YAML でも使えますが、ドキュメントや Helm チャートでは YAML が使われますKubernetes

注意が必要な値を含むJSONからYAMLへの変換例

{"name":"api","version":"1.10","debug":false,"tags":["ウェブ","欧州"],"country":"NO"} の YAML 出力
name: api
version: "1.10"
debug: false
tags:
  - ウェブ
  - 欧州
country: "NO"

YAML の利点

  • # でコメントを書ける
  • コードレビューで差分が短くなる
  • ほとんどの行で波かっこ、カンマ、引用符が不要
  • | のブロックスカラーで複数行テキストを書ける

注意点

  • インデントが意味を持つため、余分なスペースひとつで構造が変わる
  • インデントにタブは使えない
  • 引用符のない文字列は数値や真偽値として読まれることがある
  • JSON よりパーサーが遅く、実装のばらつきも大きい

この例は、波かっこを単純に置換するだけでは不十分な理由を示しています。バージョン 1.10 は JSON では文字列ですが、YAML でそのまま書くと数値の 1.1 として読まれます。ノルウェーの ISO コードである NO は、PyYAML などの YAML 1.1 パーサーでは false と読まれます。どちらも引用符を残し、本物の数値と真偽値はそのまま記述します。

JSONとYAMLの比較

JSON

JavaScriptオブジェクト表記

JSONは構造化データ用の軽量なテキスト形式で、2000年代初めにDouglas Crockfordが広め、RFC 8259とECMA-404として標準化されました。オブジェクト、配列、文字列、数値、真偽値、nullを、シンプルで読みやすい構文で表現します。ウェブAPI、設定ファイル、ほぼあらゆるプログラミング言語でのアプリ間のデータ交換における標準的な形式です。コメント、日付、スキーマは標準では含まれず、深くネストした大きなファイルはビューアなしでは読みにくくなります。

圧縮方式
–
透過
–
アニメーション
–
登場時期
2001 · Douglas Crockford
JSON 変換

YAML

YAML

YAML(「YAML Ain't Markup Language」)は、2001 年に最初に公開された、人が読みやすいデータ形式です。括弧の代わりにインデントを使い、コメントを書け、JSON の上位互換にあたります。Docker Compose、Kubernetes、GitHub Actions など、多くのアプリケーションの設定ファイルで広く使われています。空白に依存するため、スペースが 1 つずれただけで壊れやすく、「no」や日付などの値が意図しない型として解釈されることもあります。

圧縮方式
–
透過
–
アニメーション
–
登場時期
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
YAML 変換

API や生成されたデータを、人が管理し、プルリクエストでレビューし、コメントを付けられる設定ファイルにするために、JSON を YAML に変換します。

JSONからYAMLへの変換に関するよくある質問

JSONはそのままでも有効なYAMLですか?

YAML 1.2 では、そのとおりです。2009年の改訂で、すべての JSON ドキュメントが YAML ドキュメントにもなるように作られました。JSON を .yaml ファイルに貼り付けても、ほとんどのツールは受け付けます。変換の目的は読みやすさです。波かっこ、引用符、カンマのないブロック形式が、レビュー担当者や次の保守担当者に期待される書き方です。

YAMLで一部の値が引用符で囲まれるのはなぜですか?

引用符がないと、YAML が別の型として読んでしまうためです。1.10 のようなバージョン文字列は数値の 1.1 になり、yes や off は古いパーサーでは真偽値になることがあります。数値、日付、真偽値に見える文字列は引用符を付けないと文字列のままになりません。そのため、慎重な変換では引用符を残します。

変換後にコメントを追加できますか?

はい。これは変換する大きな理由のひとつです。行末、または独立した行に # に続けてメモを書きます。JSON では値を設定した理由を説明する手段がありませんでしたが、YAML ならできるので、レビューや引き継ぎが楽になります。

YAMLがタブ文字のエラーで失敗するのはなぜですか?

YAML の仕様ではインデントにタブを使うことが禁止されており、スペースだけが有効です。このコンバーターはスペースで出力しますが、タブを挿入する設定のエディターでは、次に編集したときにファイルが壊れることがあります。.yaml ファイルではスペースを使うようにエディターを設定してください。

変換したマニフェストはKubernetesで使えますか?

kubectl は JSON と YAML の両方を読み込むため、どちらでもデータは同じです。YAML 版は、ドキュメントや Helm チャート、コードレビューの多くで使われている形式というだけです。あとで jq や API 呼び出しのために JSON に戻す必要が出た場合は、YAML から JSON への変換で元に戻せます。