Visit Mozilla.org

JSON

出典: MDC

JSON (JavaScript Object Notation) は JavaScript構文のサブセットをベースにしたデータ交換フォーマットです。詳細は http://json.org/ を参照してください。JSON は、拡張機能などを含む JavaScript ベースのアプリケーションを書くときに役立ちます。

JSON のサポートは、将来の JavaScript のバージョンで予定されています (bug 340987) 。

JSON のよいところは、オブジェクトを簡単に文字列の設定値として設定に格納できることです。

註: この記事の残りは、拡張機能や XUL アプリケーションの開発者向けに書かれています。

目次

[編集] Firefox 2 における JSON

Firefox 2 には JSON のサポートが含まれていません。json.org からのコードを使用すると、bug 397595 に関する問題などが起こります。そのため、json.org や JSON.jsm からの、JSON のシリアライズや構文解析に使用される JSON オブジェクトを提供するコードを改造する必要があります。

注意: Firefox 2 では Components.utils.import を JSON.jsm のインポートに使用することはできません。

[編集] Firefox 3 における JSON

JSON.jsm が Firefox 3 の一部に取り込まれる予定です。

[編集] JSON を使用する

[編集] Quick Warning

拡張機能(アドオン) などの特権コードを書く場合、信頼できないソースからの JSON 文字列 (実際にはどんな文字列であっても) を eval しないように注意してください。JSON.fromString() (これが最善策) もしくは json.org の parseJSON, Components.utils.evalInSandbox を利用してください。

[編集] JSON.jsm チュートリアル

JSON は簡単な格納用のオブジェクトをシリアライズすることができます。シリアライズすると JavaScript オブジェクトを取得し、それを JSON 文字列に変換します。JSON.toString() がこれを行います。構文解析すると JSON 文字列を取得し、それを JavaScript オブジェクトに戻します。

JavaScript オブジェクトをシリアライズするには:

var foo = new Object();
foo.bar = "new property";
foo.baz = 3;
var JSONfoo = JSON.toString(foo);

ここで、JSONfoo{"bar":"new property","baz":3} を保持しています。

JSONfoo を JavaScript オブジェクトに戻すには次のようにします:

var backToJS = JSON.fromString(JSONfoo);

[編集] 問題点

オブジェクトのメンバーに関数を持つものはシリアライズすることができません:

foo.qwerty = function(){alert('foobar');};
foo.qwerty()
var JSONfoo = JSON.toString(foo);

例えば、上記のコードは次のエラーを引き起こします: TypeError on line XXX: No JSON representation for this object!