JSON Toolkit

JSON か YAML か

要点:JSON は波括弧で区切り、YAML はインデントで区切ります。機械には JSON、設定を編集する人間には YAML。コメント、アンカー、複数文書の構造は変換で失われます。

初級約 4 分で読めます2026-10-30 公開2026-10-30 更新
JSON をいつ使うか、YAML をいつ使うか

要点:機械同士のデータには JSON、人間が編集する設定には YAML を使いましょう。コメント、複数行テキスト、アンカーが必要なら YAML を優先し、すべての言語が同じペイロードを曖昧さなくパースしなければならないなら JSON を優先します。

並べて比較

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

同じ構造です。YAML は句読点を落とし、コメントの場所を得ます。

違い

JSON YAML
構造 波括弧とカンマ インデント
コメント なし あり
文字列 二重引用符、エスケープ必須 通常は裸
複数行テキスト \n エスケープか配列 `
再利用 なし アンカー & とエイリアス *
複数文書 配列で包む --- 区切り
パース速度 速い 遅い。インデント規則
曖昧さ 非常に低い no が真偽値としてパースされ、インデントが一つずれる

最後の行が YAML の本当のコストです。YAML 1.1 では country: NO が真偽値 false になり、version: 1.0 が浮動小数点になるかもしれません。JSON には暗黙の型付けがまったくありません。

選択

JSON:リクエストとレスポンスボディ、サービス間メッセージ、データベースの JSON 列、すべての言語で同一にパースされなければならないもの。

YAML:既定となっているエコシステム(Kubernetes、Ansible、GitHub Actions、Docker Compose)、説明が必要な設定、証明書、スクリプト、SQL のような長いテキストが支配的なファイル。

変換が失うもの

YAML → JSON:すべてのコメント、アンカーの再利用(重複に展開)、最初以外のすべての文書、日付と真偽値の元の綴り。

JSON → YAML:文字列と数値の区別が弱まるので、"8080" と 8080 はどちらも安全のため明示的な引用符が必要です。

移行や一度きりの検査のために変換します。同じファイルを二つの形式で並行ビューとして保守しないでください。

FAQ

JSON と YAML はどう決めればよいですか?

ファイルを誰が読み保守するかから始めます。プログラムが生成し、言語境界を越え、予測可能にパースされなければならないなら JSON。人間が編集し、フィールドの説明や長い複数行テキストが必要なら YAML。相互変換できますが、同じ設定を両形式で長期的に保守しないでください。

YAML がより多くの型の曖昧さを生むのはなぜですか?

YAML には暗黙の型付けがあり、NO、on、1.0 のような値が真偽値、日付、数値になりえます。JSON は明示的な型だけで、文字列は引用符が必要なので、言語をまたいだパースがより予測可能です。

YAML から JSON への変換でコメントとアンカーは残るべきですか?

いいえ。YAML のコメント、アンカー、複数文書は JSON で表現できず、アンカーは重複した内容に展開されます。保つ必要があるなら、オブジェクトの往復ではなく Document API を持つ YAML ライブラリを使ってください。

さらに読む