JSON(ジェイソン)とは
JSON(JavaScript Object Notation/ジェイソン)とは、人間にも読みやすくコンピュータにも処理しやすいテキストベースのデータ交換フォーマットである。JavaScriptの記法を元に設計されたが、現在ではPython・Java・PHP・Rubyなどあらゆるプログラミング言語で標準的にサポートされている。Web APIのリクエスト・レスポンス、設定ファイル、データベース間のデータ受け渡しなど、現代のソフトウェア開発で最も広く使われるデータ形式の一つである。
JSONの読み方
ジェイソン
ジェーソン
JSONの基本的な特徴
軽量で人間が読みやすい
JSONは余計な記号が少なく、シンプルな構造を持っています。XMLに比べて格段に少ないテキスト量で同じデータを表現でき、メモリ使用量やネットワーク転送量を削減します。また、JSONの形式は自然で直感的であり、プログラマにとって読みやすく理解しやすい特徴があります。
言語非依存
JSONはJavaScript由来ですが、Python、Java、C#、Ruby、PHPなどあらゆるプログラミング言語で標準的に対応しています。言語に依存しないテキスト形式であるため、異なるシステム間でのデータ交換に最適です。
標準化されたフォーマット
JSONは2006年にRFC 4627として標準化され、2017年にはRFC 8259で更新されました。また、ECMA-404として国際標準規格にも採用されています。これにより、世界中の開発者が同じ仕様に基づいてJSONを使用できます。
JSONのデータ型
JSONは以下の7つのデータ型をサポートしています。
文字列(String)
テキストデータを表します。ダブルクォートで囲む必要があります。例:”Hello”、”2026-03-21″など。
数値(Number)
整数と浮動小数点数の両方に対応しています。例:42、3.14、-5、1.5e10など。JSONでは10進法のみをサポートしています。
真偽値(Boolean)
trueまたはfalseの2つの値を持ちます。制御フローや条件判定に使用されます。
ヌル(Null)
値が存在しないこと、またはデータが空であることを示します。JavaScriptのundefinedとは異なります。
オブジェクト(Object)
キーと値のペアで構成されるデータ構造です。中括弧{}で囲まれ、複数のプロパティを持つことができます。
配列(Array)
複数の値を順序付きで格納します。角括弧[]で囲まれ、異なるデータ型の値を混在させることができます。
JSONの構文ルール
JSONデータの構文には厳密なルールがあり、以下を遵守する必要があります。
キーは常に文字列
オブジェクトのキーはダブルクォートで囲まれた文字列でなければなりません。シングルクォートや引用符なしは許されません。
値の形式
文字列値はダブルクォートで囲む必要があります。数値、真偽値、ヌル値は引用符を使わずに表記します。
末尾のカンマなし
最後の要素の後にカンマを付けることは許されません。これはよくある誤りです。
エンコーディング
RFC 8259により、JSONは必ずUTF-8でエンコードされなければなりません。他のエンコーディングは使用できません。
JSONの使用例と実装
API レスポンス
RESTful APIはJSONを標準的なレスポンス形式として使用します。サーバーからクライアントへのデータ送信に最適です。
設定ファイル
package.jsonやtsconfig.jsonなど、アプリケーションの設定にJSONが広く使用されています。
データストレージ
NoSQLデータベース(MongoDBなど)ではJSONライクな形式でデータを保存します。
IoTデバイス通信
軽量なJSONはIoTデバイスとサーバー間のデータ送受信に適しています。
コード例
以下は実際のJSONデータの例です。
{
"name": "Taro Yamada",
"age": 28,
"email": "taro@example.com",
"isActive": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"country": "Japan",
"prefecture": "Tokyo",
"zipCode": "100-0001"
},
"projects": [
{
"title": "API Development",
"year": 2024,
"completed": true
},
{
"title": "Web Application",
"year": 2025,
"completed": false
}
]
}
このコード例は、個人情報(名前、年齢、メールアドレス)、ステータス、スキルのリスト、住所情報、プロジェクト一覧など、複数の階層を持つデータをJSONで表現しています。各データ型が実際にどのように使用されるかを理解できます。
JSON vs XML
両者は共にデータ交換フォーマットですが、JSONはXMLよりもコンパクトで処理速度が高速です。XMLはメタデータ属性が豊富で、より複雑な構造に対応していますが、テキスト量が多くなります。現代のウェブAPI開発ではJSONが主流です。
JSON vs YAML
YAMLはJSONよりも人間が読みやすい構文を持っていますが、パーサーの実装がより複雑です。YAMLは設定ファイル(Docker Composeなど)に使用されることが多く、JSONはAPI通信とデータ交換に最適です。
JSON vs CSV
CSVは表形式データに特化していますが、階層構造を表現できません。JSONは複雑な階層構造を簡潔に表現でき、より柔軟です。データベースやAPIの結果にはJSONが適しています。
JSONの拡張形式
JSON Schema
JSONデータの構造や制約を定義するためのメタスキーマです。APIドキュメント生成やバリデーションに使用されます。
JSON-LD
Linked Dataを実装するためのJSONフォーマットです。Webスクレイピングやセマンティック検索に活用されます。
JSONP
JSONPadding)はクロスドメイン通信を実現するための古い技術です。現在はCORSが主流です。
JSON5
JSONの構文を拡張した形式で、コメントやシングルクォートを許容します。ただし標準ではありません。
NDJSON(Newline Delimited JSON)
各行がJSONオブジェクトとなるフォーマットで、ストリーミングデータ処理に最適です。
よくある誤解と注意点
誤解1: JSONはJavaScriptのみで使用できる
実際はあらゆるプログラミング言語で対応しており、言語非依存です。
誤解2: シングルクォートでキーを囲める
JSONではダブルクォートのみが有効です。シングルクォートは許可されず、パーサーエラーが発生します。
誤解3: 末尾のカンマは許容される
JSONの仕様では末尾のカンマは禁止されています。これはよくある実装ミスです。
誤解4: JSONはJavaScript のサブセット
技術的にはそうですが、JSONはそれ以外の言語でも独立したフォーマットとして扱われます。
注意点: セキュリティリスク
JSONを eval()で実行することは絶対に避けてください。JSONパーサーを使用して安全にデータを解析します。
よくある質問(FAQ)
Q1: JSONはどのように始まったのか?
A: JSONはDouglas Crockfordによって2002年ごろに提案され、2006年にRFC 4627として標準化されました。JavaScriptのオブジェクト表記法をベースにした軽量なデータ交換フォーマットとして設計されました。
Q2: JSONのMIMEタイプは何か?
A: JSONのMIMEタイプは application/json です。HTTPレスポンスの Content-Type ヘッダーで指定されます。
Q3: JSONとPythonの辞書の違いは?
A: 両者は構造が似ていますが、JSONはテキスト形式でシリアライズされたフォーマットであり、Pythonの辞書はメモリ上のデータ構造です。JSONデータはPythonで読み込まれると辞書に変換されます。
Q4: JSONでコメントを書くことはできるか?
A: 標準的なJSONではコメントをサポートしていません。ただしJSON5やJSONLDなどの拡張形式ではコメント機能を提供しています。
Q5: JSONのセキュリティ対策は何か?
A: JSON Injection やクロスサイトスクリプティング(XSS)などの攻撃に対抗するために、JSONデータは必ず公式パーサーを使用して解析し、ユーザー入力を適切にエスケープ処理します。
参考資料とリンク
- RFC 4627: The application/json Media Type for JavaScript Object Notation (JSON)
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format (2017年更新版)
- ECMA-404: The JSON Data Interchange Standard
- JSON公式サイト: https://www.json.org/
- Douglas Crockford 公式資料
- Mozilla Developer Network (MDN) – JSON解説とチュートリアル
- W3C JSON-LD仕様
まとめ
JSON(JavaScript Object Notation)は、軽量で人間が読みやすく、機械が処理しやすいデータ交換フォーマットです。言語非依存で、API通信、設定ファイル、データストレージなど、現代のソフトウェア開発のあらゆる分野で広く使用されています。
RFC 8259とECMA-404によって厳密に標準化されており、7つのデータ型(文字列、数値、真偽値、ヌル、オブジェクト、配列)をサポートしています。JSONの構文ルールは単純ですが、ダブルクォートの使用、末尾カンマの禁止、UTF-8エンコーディングなどの厳密な要件があります。
XMLやYAMLなどの代替フォーマットと比較すると、JSONはその簡潔性と処理速度の高さから、RESTful APIとデータ交換の標準フォーマットとしての地位を確立しています。将来もJSONは重要性を失わず、あらゆるデジタルシステムの基盤となり続けるでしょう。
Read this article in English:
What is JSON (JavaScript Object Notation)? | Guide to Data Interchange Format →
















コメントを残す