JSONを理解する:開発者のための完全ガイド
JSON形式の深掘り、歴史、高度な使用パターン、モダン開発のベストプラクティスを学びます。
JSON(JavaScript Object Notation)は、Web上のデータ交換における共通言語となりました。元々はJavaScriptから派生したものですが、その起源を超えて、ほぼすべてのプログラミング言語とプラットフォームで最も広く使用されるデータ形式になりました。
JSONの歴史
JSONは2000年代初頭にDouglas Crockfordによって初めて仕様化されました。JavaScriptから派生したにもかかわらず、JSONは言語に依存しない形式です。2013年にECMA-404として、その後2017年にRFC 8259として標準化されました。JSON以前はXMLが主要なデータ交換形式でしたが、JSONのシンプルさと可読性により、すぐに好まれる選択となりました。
JSONデータ型の詳細
文字列
JSONの文字列はダブルクォートで囲む必要があります。Unicode文字とエスケープシーケンスをサポートします:
{
"greeting": "こんにちは!",
"unicode": "\u0048\u0065\u006C\u006C\u006F",
"escaped": "1行目\n2行目\tタブ"
}
数値
JSON数値は整数または浮動小数点です。科学的記数法もサポートされています:
{
"integer": 42,
"negative": -17,
"float": 3.14159,
"scientific": 2.998e8
}
高度なJSONパターン
JSON Schema
JSON Schemaは、JSONドキュメントの注釈付けと検証のための語彙です:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {"type": "string", "minLength": 1},
"age": {"type": "integer", "minimum": 0}
},
"required": ["name"]
}
JSON Patch (RFC 6902)
JSON Patchは、JSONドキュメントへの変更を記述するフォーマットを定義します。
パフォーマンスの考慮事項
- パース速度: JSONパースは、よりシンプルな構造のため、一般的にXMLパースより高速です
- ファイルサイズ: JSONは通常、同等のXMLより30-50%小さいです
- ストリーミング: 大規模データセットの場合、JSON Lines(JSONL)形式を検討してください
- 圧縮: JSONはgzipでよく圧縮され、サイズを70-90%削減できます
一般的な落とし穴
1. コメント不可: JavaScriptと異なり、JSONはコメントをサポートしません
2. 末尾カンマ不可: オブジェクトや配列の最後の要素に末尾カンマがあってはなりません
3. キーは文字列: JSONキーはクォートされた文字列でなければなりません
4. undefinedなし: JSONにはnullはありますがundefinedはありません
5. 日付処理: JSONにはネイティブの日付型がありません
モダン開発におけるJSON
JSONは現代の開発のあらゆる場所で使用されています:
- REST API: リクエストとレスポンスボディの標準形式
- 設定ファイル: package.json、tsconfig.jsonなど
- NoSQLデータベース: MongoDBはBSON(Binary JSON)でデータを保存
- WebSocket: リアルタイム通信でJSONメッセージを頻繁に使用
- GraphQL: レスポンスは常にJSON形式
JSONフォーマッターツールを使用して、JSONデータを即座に検証、フォーマット、圧縮できます。