現代のウェブ開発において、異なるシステム間でデータをやり取りするための標準的な形式として欠かせないのがJSON(JavaScript Object Notation)です。軽量で人間にとっても読みやすく、多くのプログラミング言語でサポートされているため、API通信などのデータ交換に広く利用されています。
Key Facts
- 正体: JavaScriptの表記法をベースにした、言語に依存しないデータ交換フォーマット。
- 標準規格: RFC 8259 (STD 90)、ECMA-404、ISO/IEC 21778:2017などで定義されている。
- 文字コード: オープンなエコシステムでの交換にはUTF-8が必須。
- 特徴: コメントを禁止することで、異なる実装間での相互運用性を確保している。
- 拡張子: 一般的に
.jsonが使用される。
JSONの誕生と発展の歴史
JSONは2000年代初頭、ダグラス・クロックフォード氏によって仕様が策定されました。当時、ブラウザとサーバー間でリアルタイムに通信を行うにはFlashやJavaアプレットなどのプラグインが必要でしたが、標準的なブラウザ機能だけで動作するプロトコルの必要性からJSONが普及しました。
2001年にクロックフォード氏とチップ・モーニングスター氏によって最初のメッセージが送信され、その後、State Software社での議論を経て「JSON」という名称が決定しました。2005年にはYahoo!がウェブサービスにJSONを採用し、急速に普及が進みました。

もともとはJavaScriptのサブセット(一部)として設計されましたが、現在は言語に依存しない独立したフォーマットとして確立しています。そのため、JavaScript以外のほぼすべての主要なプログラミング言語で、JSONデータの解析(パース)や生成を行うライブラリが提供されています。
技術的な仕様と構文
データ型と構造
JSONで扱える基本的なデータ型は以下の通りです。
- Boolean:
trueまたはfalseの真偽値。 - null: 空の値を示す
null。 - 数値: 整数や浮動小数点数。実装によって精度は異なりますが、相互運用性のためにIEEE 754 binary64精度が推奨されています。
- オブジェクトと配列: データの集合を構造化して保持します。
文字エンコーディングと互換性
JSONのデータ交換にはUTF-8エンコーディングが使用されます。これにより、Unicodeの全文字セットをサポートしています。なお、2019年のECMAScript改訂により、JSONは完全にECMAScriptのサブセットとなりました。
相互運用性とセキュリティ
JSONでは意図的に「コメント」が排除されています。これは、コメントを解析指示として利用する実装が現れることで、異なるシステム間での互換性が損なわれるのを防ぐためです。また、セキュリティ上の理由から、JSONテキストをJavaScriptの eval() 関数に直接渡すことは推奨されません。代わりに専用のパーサーを使用することが安全です。
JSONの概要まとめ
| 項目 | 内容 |
|---|---|
| メディアタイプ | application/json |
| 標準規格 | RFC 8259, ECMA-404, ISO/IEC 21778:2017 |
| 主な用途 | データ交換、設定ファイル、APIレスポンス |
| 文字コード | UTF-8 |
| ベース言語 | JavaScript (ECMA-262) |
派生フォーマットと代替案
JSONのシンプルさを活かしつつ、特定の用途に特化した派生形式や、機能を拡張した形式が存在します。
- JSON5 / JSONC: コメントや末尾のカンマを許可した拡張形式。JSONCはVisual Studio Codeなどで採用されています。
- YAML: JSONのスーパーセット(バージョン1.2)であり、より人間が書きやすい形式です。
- GeoJSON: 地理的な特徴を表現するための専用フォーマット。
- UBJSON / BSON: 効率的なデータ転送のために設計されたバイナリ形式のJSON。
- JSON-LD: リンクデータ(Linked Data)をエンコードするための手法。
Frequently Asked Questions
JSONはどうやって発音しますか?
国際標準(ECMA-404およびISO/IEC 21778:2017)では、「ジェイソン(/ˈdʒeɪ.sən/)」のように発音することが指定されています。
JSONにコメントを書き込むことはできますか?
標準的なJSON仕様ではコメントは禁止されています。コメントが必要な場合は、JSON5などの拡張形式を利用するか、データをパースする前にコメントを除去するツール(JSMinなど)を使用する必要があります。
JSON Schemaとは何ですか?
JSONデータの構造を定義するためのフォーマットです。データのバリデーション(検証)やドキュメント化、アプリケーション間でのデータ契約として利用されます。
JSONとXMLの主な違いは何ですか?
JSONはJavaScriptのオブジェクト表記に基づいた軽量な形式であるのに対し、XMLはタグベースのマークアップ言語です。JSONはXMLよりも簡潔で解析速度が速い傾向にありますが、XMLはコメントをサポートしているなどの違いがあります。
JSONをJavaScriptのeval()で処理しても大丈夫ですか?
いいえ、安全ではありません。一部の有効なJSONテキストが古いJavaScriptエンジンで不正なコードとして処理される可能性があり、セキュリティリスクを伴います。必ず標準のJSONパーサーを使用してください。
References
- Crockford uses the pe/per. This article uses he/him for simplicity and understanding.