JSON(ジェイソン)とは|JavaScriptオブジェクト記法のデータ交換フォーマット

JSON eyecatch image

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は重要性を失わず、あらゆるデジタルシステムの基盤となり続けるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA