UltKit

YAMLをJSONに変換

YAMLの設定ファイル、OpenAPI仕様書、CIファイルを、どのパーサー、API、スキーマ検証ツールでも読めるJSONに変換します。.yamlまたは.ymlファイルをアップロードして、インデント付きのJSONをダウンロードできます。

データ変換

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

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

出力

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

このツールの使い方

  1. 1

    YAMLファイルをアップロード

    .yaml または .yml ファイルを追加します。一度に最大20ファイル、1ファイルあたり95 MBまで対応しています。元のファイル名はそのまま使われ、JSONファイルには拡張子だけを変えた同じ名前が付きます。

  2. 2

    インデント付きかコンパクトかを選択

    整形して出力はオンになっており、JSONにインデントが付いて読みやすく、コードレビューにも向いた形式になります。リクエストボディに貼り付ける1行のファイルが必要な場合は、詳細設定でオフにしてください。

  3. 3

    変換して利用

    JSONに変換 →を押してダウンロードし、そのファイルをAPI、バリデーター、または必要としていたスクリプトに渡します。

開発者がYAMLをJSONに変換する理由

YAMLは人が読み書きするための形式です。波括弧の代わりにインデントを使い、コメントを書け、ほとんどの文字列に引用符が要りません。そのため、Kubernetesのマニフェスト、GitHub Actionsのワークフロー、Docker Composeファイル、OpenAPI仕様書など、チームが手作業で編集するものに使われています。一方JSONはプログラム向けの形式です。どの言語も標準ライブラリにJSONパーサーを備え、ブラウザもネイティブで解析でき、ほとんどのHTTP APIはJSON以外を受け付けません。

そのため、変換は両者の境目で行われます。プラットフォームエンジニアはJSONしか読めないjqにマニフェストを渡します。バックエンド開発者はJSONを求めるコード生成ツールにOpenAPI仕様書を送ります。テスターはYAMLで書いたフィクスチャデータをJavaScriptのテストスイートに読み込ませます。いずれの場合も、原本はYAMLのままで、JSONはビルド成果物です。設定ファイルではなくフィードやエクスポートのデータをまとめて扱うなら、XMLをJSONに変換で古いマークアップ形式を同じように変換できます。

YAMLとJSONの関係の歩み

Clark EvansがYAMLを最初に提案
2001
YAML 1.2でJSONがYAMLのサブセットに
2009
RFC 8259、現行のJSON標準
2017
YAML 1.2.2の改訂版を公開
2021

YAML独自の機能はJSONでどうなるか

アンカー(&defaults)とエイリアス(*defaults)を使うと、YAMLではブロックを再利用できます。JSONには参照がないため、各エイリアスはアンカーされたブロックの完全なコピーに置き換えられます。

  • JSONはYAMLよりかなり長くなることがあります
  • マージキー(<<: *defaults)も同じように展開されます
小さなYAML設定を整形したJSONにした例
{
  "service": "billing",
  "replicas": 3,
  "ports": [8080, 9090],
  "env": {
    "LOG_LEVEL": "info",
    "REGION": "NO"
  }
}

YAMLと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 変換

JSON

JavaScriptオブジェクト表記

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

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

人が読み書きするために作った設定ファイルや仕様書を、APIリクエスト、スキーマバリデーター、YAMLパーサーのないツールなど、機械に渡す必要があるときにYAMLをJSONに変換します。

YAML JSON変換のよくある質問

同じデータを持つのに、なぜYAMLをJSONに変換するのですか?

多くのツールがどちらか一方しか読み込めないためです。JSONのパーサーはあらゆるプログラミング言語とブラウザに標準で備わっていますが、YAMLは追加のライブラリが必要です。REST APIのリクエストボディ、JSON Schemaバリデーター、jq、package.jsonやブラウザ拡張機能のmanifest.jsonなどは、いずれもJSONを前提としています。

YAMLのコメントはどうなりますか?

削除されます。RFC 8259ではJSONにコメントの構文が定められていないため、#で始まる行の置き場所がありません。コメント付きのYAMLファイルを原本として残し、JSONはいつでも再生成できるコピーとして扱ってください。

NOやoffがfalseになったのはなぜですか?

YAML 1.1に従うパーサーは yes、no、on、off を真偽値として読み込むため、ノルウェーの国コード NO が false になることがあります。YAML 1.2では真偽値は true と false だけですが、すべてのツールが対応しているわけではありません。YAML側で "NO" のように引用符で囲めば、JSONでも文字列のままになります。

YAMLで書かれたCloudFormationテンプレートを変換できますか?

AWS CloudFormationは両方の形式を受け付けますが、!Ref や !GetAtt といった短縮タグはYAMLにしかありません。JSONテンプレートでは {"Ref": "MyBucket"} や {"Fn::GetAtt": [...]} のように完全な関数形式で書きます。変換する前に短縮タグを完全な形式に書き換えておくと、JSONテンプレートが正しいまま保たれます。

逆方向に変換するにはどうすればよいですか?

JSONをYAMLに変換をご利用ください。APIのレスポンスや生成されたファイルを、リポジトリで管理する読みやすい設定ファイルにしたいときによく使う方向です。