JSON

JavaScript Object Notation の略で、軽量なデータ交換フォーマット。人間にも機械にも読みやすい構造を持つ。

JSON (JavaScript Object Notation) は、キーと値のペアでデータを表現する軽量なテキストベースのデータ交換フォーマットです。2001 年に Douglas Crockford が仕様を整理し、ECMA-404 および RFC 8259 として標準化されました。JavaScript から派生した構文ですが、言語に依存しない汎用的な形式として Python、Java、Go、Ruby など事実上すべてのプログラミング言語でサポートされています。

JSON が扱えるデータ型は、文字列 (ダブルクォートで囲む)、数値 (整数・浮動小数点)、真偽値 (true/false)、null、配列 (角括弧)、オブジェクト (波括弧) の 6 種類です。この単純さが JSON の最大の強みであり、REST API のレスポンス形式として事実上の標準となった理由でもあります。Web API 設計の書籍で JSON の活用パターンを体系的に学べます。

XML との比較では、JSON はタグの開始・終了が不要なため記述量が少なく、パースも高速です。たとえば同じデータを表現する場合、JSON は XML の約 60-70% のサイズで済むことが多いとされています。一方、XML はスキーマ定義 (XSD) や名前空間のサポートが充実しており、厳密なデータ検証が求められる場面では依然として選ばれます。YAML は JSON のスーパーセットであり、コメントやアンカー機能を持つため設定ファイルとして好まれますが、インデントに依存する構文はコピー&ペースト時にエラーを招きやすい欠点があります。

JSON にはいくつかの制約があります。コメントをサポートしていないため、設定ファイルとしては JSON5 や JSONC (JSON with Comments) が使われることがあります。日付型が存在しないため、日時データは ISO 8601 形式の文字列 (例: "2025-01-15T09:30:00Z") として表現するのが慣例です。また、末尾のカンマ (trailing comma) が許容されないため、配列やオブジェクトの最後の要素の後にカンマを付けると構文エラーになります。

実務では JSON のバリデーションとスキーマ定義に JSON Schema が広く使われています。API のリクエスト・レスポンスの構造を JSON Schema で定義しておくと、クライアントとサーバー間のデータ契約が明確になり、不正なデータの混入を防げます。JavaScript 実践の書籍でも JSON の高度な活用法が解説されています。

セキュリティ面では、信頼できないソースからの JSON を eval() で解析することは絶対に避けるべきです。必ず JSON.parse() を使用し、不正なコードの実行を防止します。また、JSON インジェクション攻撃を防ぐため、ユーザー入力をそのまま JSON に埋め込む際はエスケープ処理が必要です。

文字数カウントの観点では、JSON のキー名、波括弧、角括弧、ダブルクォート、コロン、カンマなどの構文要素がデータサイズに影響します。圧縮 (minify) により不要な空白やインデントを除去してサイズを削減でき、さらに gzip 圧縮を組み合わせると転送サイズを大幅に縮小できます。API のレスポンスサイズを最適化する際には、不要なフィールドの除外やキー名の短縮も有効な手法です。