メインコンテンツまでスキップ

RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format

  • ステータス: Proposed Standard
  • 発行日: March 2014
  • ストリーム: IETF
  • 廃止: RFC4627, RFC7158
  • 廃止: RFC8259
  • エラッタ: エラッタなし

概要 (Abstract)

JavaScript Object Notation (JSON) は, 軽量でテキストベース, 言語に依存しないデータ交換フォーマットです。ECMAScriptプログラミング言語標準に由来します。JSONは, 構造化データの移植可能な表現のための小さなフォーマット規則のセットを定義します。

この文書は, 他のJSON仕様との不整合を排除し, 仕様エラーを修正し, 経験に基づいた相互運用性ガイダンスを提供します。


JSONの中核概念

データ型

JSONは以下のデータ型をサポートします:

プリミティブ型 (Primitive Types):

  • string - 文字列
  • number - 数値
  • boolean - ブール値 (true/false)
  • null - null値

構造化型 (Structured Types):

  • object - オブジェクト (順序付けられていないキー値ペアの集合)
  • array - 配列 (順序付けられた値のシーケンス)

構文の例

オブジェクト (Object):

{
"name": "張三",
"age": 30,
"city": "北京"
}

配列 (Array):

[1, 2, 3, 4, 5]

ネストした構造:

{
"users": [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30}
],
"total": 2
}

RFC 4627からの主な変更点

  1. JSONテキスト定義の緩和: JSONテキストをオブジェクトや配列だけでなく, 任意のJSON値として許可
  2. 正誤表の修正: RFC 4627で報告されたエラーを修正
  3. 相互運用性ガイダンス: 実装の相互運用性に関するより多くのアドバイスを提供
  4. エンコーディングの明確化: UTF-8エンコーディングの使用を強調

  • 公式原文: RFC 7159 (TXT)
  • 公式ページ: RFC 7159 DataTracker
  • 廃止: RFC 4627 (旧JSON仕様)
  • 廃止される: RFC 8259によって廃止されました
  • メディアタイプ: application/json
  • ファイル拡張子: .json

クイックリファレンス

MIMEタイプ

Content-Type: application/json; charset=UTF-8

よく使用されるツール

オンライン検証:

プログラミング言語のサポート:

JavaScript:

const obj = JSON.parse('{"name":"Alice"}');
const str = JSON.stringify({name: "Bob"});

Python:

import json
obj = json.loads('{"name":"Alice"}')
str = json.dumps({"name": "Bob"})

Java:

// JacksonまたはGsonライブラリを使用
ObjectMapper mapper = new ObjectMapper();
MyObject obj = mapper.readValue(jsonString, MyObject.class);

重要な注意: RFC 7159はRFC 8259によって置き換えられましたが, JSONの進化の歴史を理解するための重要な文書です。最新のアプリケーションは, 現在の標準としてRFC 8259を参照すべきです。