JavaScriptは、 Netscape Navigator用のページスクリプト言語として広まった汎用のプログラミング言語です。Javaのサブセットであると広く信じられていますが、それは違います。Cのような構文とソフトオブジェクトをもつSchemeに類似した言語です。JavaScriptは、ECMAスクリプト言語仕様-第3版で標準化されました。
JSONの表記法は、JavaScriptのリテラルオブジェクトの表記法のサブセットです。JSONはJavaScriptのサブセットであるため、あれこれ悩まずにJavaScript言語で使用できます。
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
この例では、オブジェクトは単一のメンバ"bindings"を含んで生成されます。"bindings"は、3つのオブジェクトが入った配列を持ちます。そして、それぞれのオブジェクトは"ircEvent"、"method"、および"regex"メンバを含んでいます。
メンバは、ドット( . )または添字演算子( [ ] )を使って読み出せます。
myJSONObject.bindings[0].method // "newURI"
JSONテキストをオブジェクトに変換するには、eval()関数を使用してください。eval()はJavaScriptコンパイラを呼び出します。JSONは、JavaScriptの真のサブセット(真部分集合)なので、コンパイラは、正確にテキストを解析してオブジェクト構造を作り出します。
var myObject = eval('(' + aJSONtext + ')');
eval関数は非常に高速です。しかし、どんなJavaScriptプログラムでもコンパイルし実行できるため、セキュリティに問題が生じる可能性があります。ソースを信頼できる場合のみ、eval関数を使用するのが望ましいです。基となるページとJSONのデータの両方を提供しているようなウェブアプリケーションの場合、このルールは一般的なことです。ソースは信頼できない場合があります。特に、クライアントを決して信頼するべきではありません。
セキュリティが心配ならば、JSON parserを使用したほうが良いでしょう。JSON parserは、JSONテキストだけを認識するため、はるかに安全です。
var myObject = JSON.parse(aJSONtext);
JSON stringifierは、反対に、JavaScriptのデータ構造をJSONテキストに変換します。JSONは循環データ構造に対応していないので、JSON stringifierに循環構造を入力しないように注意してください。
var myJSONText = JSON.stringify(myObject);
JSON parserとJSON stringifierのオープン・ソースコードが利用できます。小さくすれば、たったの3Kbです。