Curious TechieDev Toolbox
すべてのガイド/データフォーマット8 min read

JSONとは?RFC 8259規格に準拠した技術仕様ガイド

データ型、構文ルール、AST検証、シリアライズ処理の注意点、末尾カンマがエラーになる理由を解説。

重要ポイント (要約)
  • JSONは、RFC 8259およびECMA-404で規定されたテキストベースの軽量データ交換規格です。
  • 文字列、数値、真偽値、null、オブジェクト、配列の6種類のデータ型をサポートします。
  • オブジェクトのキー名は必ずダブルクォーテーション("key")で囲む必要があります。
  • 構文仕様上、末尾のカンマ(Trailing comma)は厳格に禁止されています。
  • JSON仕様上、整数型と浮動小数点数型の厳密な区別は存在しません。

あらゆる最新のWebアプリケーション、クラウドインフラ、モバイルバックエンドは、異なる実行環境間で構造化データをやり取りするための共通規格に依存しています。その標準形式こそが JSON(JavaScript Object Notation) です。

1. JSONの概要と歴史的背景

JSONは2000年代初頭にダグラス・クロックフォード(Douglas Crockford)氏によって、肥大化したXMLの軽量な代替規格として提唱されました。JavaScriptのオブジェクトリテラル構文に着想を得ていますが、言語に一切依存しないデータ形式として国際規格 RFC 8259 および ECMA-404 で厳密に標準化されています。

2. 6つの基本データ型

JSONがサポートするデータ型は厳密に以下の6種類のみです。これら以外の型(関数、Dateオブジェクト、undefinedなど)を含むデータは無効なJSONとなります:

オブジェクト(Object):{ "userId": 101, "role": "admin" }
配列(Array):[ "production", "staging", "dev" ]
文字列(String):"ダブルクォートで囲まれたUnicode文字列"
数値(Number):42, 3.14159, -17, 1.2e5
真偽値(Boolean):true, false
Null(空値):null

3. 厳格な構文規則と文法仕様

寛容な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() を必ず使用してください。