読み方 : ジェイソン

JSON 【JavaScript Object Notation】

概要

JSON(JavaScript Object Notation)とは、JavaScriptにおけるオブジェクトの表記法を応用したテキスト(文字)ベースのデータ形式。多数の要素が複雑な構造で組み合わせられたデータを簡潔な表記で書き表すことができる。JavaScriptプログラム上ではコードとして実行するだけで読み込みが完了する。

解説 JavaScriptではオブジェクト定義の構文として、標識となる文字列(キー)と対応する値のペアを列挙したデータ構造を用いる。これは他のプログラミング言語では「連想配列」「ハッシュ」「マップ」「辞書」(ディクショナリ)などと呼ばれるものに近い。

JSONでは、これと配列を利用して複合的なデータ構造を記述することができる。配列オブジェクトの値として別の配列オブジェクトを入れ子の形で記述でき、深い階層構造を持つ複雑なデータを表すことができる。

JSONはJavaScriptでの扱いが簡単なため、Webアプリケーションなどでプログラム間でのデータ交換フォーマットとして多用されている。また、数多くのプログラミング言語でJSONを簡単扱えるようにする追加機能などが公開されており、設定ファイルデータ交換などでXMLに代わって普及している。

格納できるデータ

値として利用できるデータ型JavaScriptに用意されているプリミティブデータ型で、数値型(整数または浮動小数点数)、文字列型ブール型真偽値)、null(値無し)、配列オブジェクトである。JavaScriptオブジェクトには関数を格納することもできるが、JSONではコードの格納はできない。

配列は [“A”,“B”,“C”] のように全体を角括弧で囲み、値をカンマ区切りで列挙していく。オブジェクトは { Key1:“Value1”, Key2:“Value2”} のように全体を中括弧で囲み、キーと値をコロン(:)で区切って表記したペアをカンマ区切りで列挙していく。

保存形式

ファイルとして保存する際にはJSONデータをそのままテキスト形式で記録するのが一般的である。文字コードUnicodeUTF-8とするよう規定されており、JSON自体の仕様の範囲内では別の文字コードを使用したり受信側に文字コードの種類を伝達する仕組みは用意されていない。

標準のファイル拡張子として「.json」が用いられるが、JavaScriptファイルとして認識させたいなど何らかの事情がある場合は通常のJavaScriptプログラムと同じ「.js」とする場合もある。HTTPで伝送する場合のMIMEタイプは「application/json」が用いられる。

なお、Webページ上で別のWebサーバ(クロスドメイン)のJSONファイルを直に読み込もうとすると、Webブラウザの「同一生成元ポリシー」(SOP)という制約によって拒否されてしまう。この場合は、JSONデータを関数呼び出しの形で記述した「JSONP」(JSON with Padding)という形式のファイルとして用意し、scriptタグで読み込んで実行するという形を取る。

歴史

JSONはもともとJavaScriptの構文規則の一部だが、2001年にダグラス・クロックフォード(Douglas Crockford)氏がこれをデータ形式のように扱うことできることを「発見」し、これをJSONと命名した。

2006年には独立したデータ形式としてIETFがRFC 4627として規格化した。JavaScript標準化を行っていたEcma Internationalが2011年にECMAScript 5.1の一部として標準化、2013年にはECMA-404として独立した規格が発行された。両団体間で一部の仕様が異なる問題があったため、2017年にRFC 8259およびECMA-404の改訂版として仕様が統一された。

(2025.9.19更新)

他の用語辞典による「JSON」の解説 (外部サイト)