あらゆる最新のWebアプリケーション、クラウドインフラ、モバイルバックエンドは、異なる実行環境間で構造化データをやり取りするための共通規格に依存しています。その標準形式こそが JSON(JavaScript Object Notation) です。
1. JSONの概要と歴史的背景
JSONは2000年代初頭にダグラス・クロックフォード(Douglas Crockford)氏によって、肥大化したXMLの軽量な代替規格として提唱されました。JavaScriptのオブジェクトリテラル構文に着想を得ていますが、言語に一切依存しないデータ形式として国際規格 RFC 8259 および ECMA-404 で厳密に標準化されています。
2. 6つの基本データ型
JSONがサポートするデータ型は厳密に以下の6種類のみです。これら以外の型(関数、Dateオブジェクト、undefinedなど)を含むデータは無効なJSONとなります:
{ "userId": 101, "role": "admin" }[ "production", "staging", "dev" ]"ダブルクォートで囲まれたUnicode文字列"42, 3.14159, -17, 1.2e5true, falsenull3. 厳格な構文規則と文法仕様
寛容なJavaScript実行エンジンとは異なり、JSONパーサーは一切の曖昧さを排除した厳格な構文規則を適用します:
- ダブルクォーテーションの必須化: オブジェクトのキー名および文字列リテラルは二重引用符(
"key")で囲む必要があります。シングルクォーテーション('key')は構文エラーとなります。 - 末尾カンマ(Trailing Comma)の禁止: カンマは要素同士の区切り記号としてのみ機能します。リストやオブジェクトの最後の要素の後ろにカンマを配置すると構文エラーが発生します。
- コメント記述の禁止: 標準JSON仕様では
//や/* */によるコメント記述は許可されていません。
4. 抽象構文木(AST)パースの仕組み
ブラウザが JSON.parse() を実行する際、決定性字句解析器(Lexer)が生の文字列トークンをメモリ上の抽象構文木(AST)へと変換します。パーサーはトークンの状態を追跡し、括弧の整合性やUTF-8サロゲートペアの正当性を検証した上でネイティブオブジェクトを生成します。
5. JSONとXML・YAMLの比較
XMLは厳密なスキーマ検証(XSD)を要する文書管理システムに適し、YAMLは可読性が求められるDevOps構成ファイルで好まれますが、Web APIにおける高スループット通信では、シリアライズのオーバーヘッドが少なくブラウザで即時解析可能なJSONが絶対的な業界標準です。
6. セキュリティと安全な実装指針
信頼できない外部JSONデータのパースに eval() を使用してはいけません。スクリプト実行リスクのない、ブラウザネイティブの安全な JSON.parse() を必ず使用してください。