JSONとは、オブジェクトや配列を組み合わせて構造化されたデータを表現する、データ記述言語です。
オブジェクトと配列は、自由にネストすることができます。よってそれらを使用して、複数のデータを記述することができます。
数値は10進数で記述します。8進数や16進数は使用できません。
負数を表すにはマイナス記号 ( - ) を付けますが、正数を表すのにプラス記号 ( + ) は使用できません。
JavaScriptでは文字列を記述するのに、ダブルクォート ( " )かシングルクォート( ' )のいずれかを使用できます。しかしJSONでは、ダブルクォートしか認められないことに注意が必要です。
使用可能な文字は、ダブルクォート ( " ) とバックスラッシュ ( \ ) 以外です。また以下のエスケープシーケンスをサポートします。
| 表記 | 説明 | |
|---|---|---|
| \" | 二重引用符 | quotation mark |
| \\ | バックスラッシュ | reverse solidus |
| \/ | スラッシュ | solidus |
| \b | 後退 (バックスペース) | backspace |
| \f | 改ページ | formfeed |
| \n | 改行 | newline |
| \r | 復帰 | carriage return |
| \t | タブ | horizontal tab |
| \uXXXX | 4桁の16進数で表記されたUnicode文字 | 4 hexadecimal digits |
なおサーバからJSONで出力する場合には、バックスラッシュ自体がエスケープ文字とみなされてしまうため、「\\n」のようにバックスラッシュをエスケープする必要があります。
オブジェクトは、基本的にオブジェクトリテラルの形式で記述します。しかしそれとの相違点として、プロパティ名は文字列としてダブルクォート ( " ) で囲む必要があることに注意が必要です。
{ "property1":"text", "property2":10 }
最後の要素の後にカンマ (,) を付けてはならない。
配列は配列リテラルの形式で記述します。
[ 1, 2, "text" ]
最後の要素の後にカンマ (,) を付けてはならない。
「true」「false」と記述します。
true
「null」と記述します。
null
| エンコーディング | UTF-8 |
|---|---|
| 拡張子 | .json |
| MIMEタイプ | application/json |
JSON形式の文字列データは、eval()関数で評価することでJavaScriptのオブジェクトに変換できます。
このときeval()に渡す文字列は括弧で囲む必要があります。さもなくば「SyntaxError: invalid label」として例外が発生します。
var data = '{ "property1":"text", "property2":10 }';
var obj = eval( '(' + data + ')' );
このコードを実行するとobjは次のようになります。

XMLHttpRequestオブジェクトとeval()関数を使用することで、サーバからJSON形式のデータを取得して処理できます。
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function()
{
var READYSTATE_COMPLETED = 4;
var HTTP_STATUS_OK = 200;
if( xmlHttpRequest.readyState == READYSTATE_COMPLETED
&& xmlHttpRequest.status == HTTP_STATUS_OK )
{
if( xmlHttpRequest.getResponseHeader( 'Content-Type' ) == 'application/json' )
{
// JavaScriptオブジェクトとしてJSONデータを取得する
var data = eval( '(' + xmlHttpRequest.responseText + ')' );
}
}
}
var requestUrl = 'test.json';
xmlHttpRequest.open( 'GET', requestUrl );
xmlHttpRequest.send( null );
Prototype.jsを使用するならば、同様の処理は次のようになります。
new Ajax.Request( 'test.json',
{
method: 'get',
onSuccess: function( response )
{
var data = response.responseJSON;
}
} );
FirefoxのアドオンであるJSONViewを使用することで、JSON形式のデータをブラウザ内で書式化して表示することができます。

このアドオンは正確なJSONデータしか受け入れず、書式に誤りがあるときには読み込み中のまま処理が終了しません。