JSONとは、テキストベースのデータフォーマット(データの書き方)である。仕様がシンプルかつ直感的で、人でもプログラムでも読みやすいのが利点だ。
"JavaScript Object Notation"の略で、元々はJavaScriptで使うために開発された。その扱いやすさから、現在ではJSに限らず幅広い言語で使われている。
JSONの仕様
JSONでは、以下の6つの記号によってデータを構造化する。
記号の種類 | 概要 |
---|---|
{ |
オブジェクトの開始を示す。 |
} |
オブジェクトの終了を示す。 |
[ |
配列の開始を示す。 |
] |
配列の終了を示す。 |
: |
キーと値の境目を示す。 |
, |
値同士の境目を示す。 |
基本的な形は、以下のいずれかになる。
上がオブジェクト、下が配列である。含められる値は、以下の7種類のいずれかとなる。
オブジェクト
オブジェクトは、波括弧で囲まれた0
個以上のキーバリューペアの集まりである。キーバリューペアは、文字列と値を:
で区切った形のやつだ。
キーは原則文字列でなければならず、また一意にすべきとされる。重複するキーを指定した場合の挙動は、JSONデータを読み込むソフトウェアによる。大抵は最後に読み込んだ値が採用されるが、パースエラーを返すものもある。
配列
配列は、角括弧で囲まれ、カンマで区切られた0
個以上の値の集まりである。値の型はいずれでも構わないし、混在しても良い。
数字
ダブルクォーテション(""
)で囲まれていない、裸の数字。10進数で、マイナス記号は使えるがプラス記号は使えない。
また、1つ以上の桁に続けて、小数表記、指数表記も使える。
指数表記に使うe
は、大文字でもいいし小文字でもいい。また、マイナス記号だけでなくプラス記号も使える(プラス記号は省略できる)。
小数表記や単体で使う場合を除き、0
から始まる数値は許されていない。
文字列
ダブルクォーテーション(""
)で囲まれた文字列。エスケープが必要な文字を除き、すべてのユニコード文字を含めることができる。
エスケープが必要な文字とは、例えば"
とか\
とかである。これらはバックスラッシュを付けて\"
や\\
とすれば文字として扱われる。
なお、JavaScriptではダブルクォーテーションもシングルクォーテーションも使えるが、JSONではシングルクォーテーションは無効である。
true/false/null
上記4種類に加え、裸のtrue
、裸のfalse
、裸のnull
も使える。
エンコーディング
JSONファイルは、UTF-8でエンコードされていなければならない。
使いどころ
JSONの使いどころは多岐にわたる。簡単な設定ファイルにも使われるし、GeoJSONなど巨大で複雑なデータをポータブルに扱うためにも使われる。
また、NoSQL形式のデータベースの多くはJSON形式でデータを格納する。
キーバリューが前提であるので、カンマ区切りのCSVよりも直感的で、タグづけするXMLよりも読みやすい。
手軽にデータを扱うどのシチュエーションにもマッチする。