次の方法で共有


JavaScript Object Notation (JSON)

JavaScript Object Notation (JSON) は、JavaScript 言語のオブジェクト リテラル表記のサブセットに基づく単純で軽量のデータ交換形式です。 Windows Internet Explorer 8 の JavaScript エンジンは、ネイティブ JSON 処理関数 (ダグラス・クロックフォードの json2.js APIを使用) 用の ECMAScript 3.1 JSON 提案 を実装しています。

Internet Explorer 8 には、ES3.1 Proposal Working Draftで説明されている JSON サポートに準拠するネイティブ JSON オブジェクトが含まれています。 一部の Web ページでは、ネイティブ JSON オブジェクトが検出され、標準以外の方法で使用されます。 通常、この使用によりスクリプト エラーが発生し、AJAX 要求の処理が中断されます。 次のコード例は、JSON オブジェクトを使用する間違った方法を示しています。

    if(!window.JSON) JSON = myJSON; 
    JSON.encode(obj); // Not part of the standard

代わりに、次のコード例は、JSON オブジェクトを使用する適切な方法を示しています。

    JSON = myJSON; 
    JSON.encode(obj);

Windows Internet Explorer には、2 つの組み込みメソッド (stringify解析) を含むグローバル JSON オブジェクトを導入することで、JSON のネイティブ サポートが含まれています。 グローバル JSON オブジェクトは JavaScript エンジンで定義され、エンジンの初期化フェーズ中に作成されます。 下位互換性を維持するために、この機能は、Web サイトで "Internet Explorer 8 Standards" レイアウト (ドキュメント) モードを使用して最新バージョンの JavaScript 機能を使用している場合にのみ使用できます。 この機能は、グローバル変数 JSON に依存する Web ページの動作や、json2.jsを使用する Web ページの動作にも影響する可能性があります。

グローバル JSON オブジェクトはオーバーライドできます。 ただし、Web ページで "Internet Explorer 8 Standards" レイアウト (ドキュメント) モードを使用する場合、未定義のオブジェクトではなくなりました。 JSON は JavaScript エンジンによってグローバル名としてインスタンス化されるため、"if(!this.JSON)" は False に評価され、ユーザー コードで変更する必要があります。

json2.js を使用する Web ページは影響を受けにくい可能性があります。 いくつかの例外を除き、これらのページは高速に動作するはずです。 例外は、Internet Explorer のネイティブ JSON 実装と json2.jsの違いが原因です。 たとえば、シリアル化中に、ネイティブ JSON 実装はサイクルを検出し、json.jsのように無限再帰に入りません。 これらの例外の詳細については、JavaScript ブログを参照してください。

詳細については、JSON ドキュメントのバージョン管理と JavaScript エンジンのバージョン サポートを参照してください。

互換性ビュー を使用して Web アプリケーションの互換性の問題を修正する