JavaScript 对象表示法 (JSON)

JavaScript 对象表示法(JSON) 是一种简单轻量级的数据交换格式,该格式基于 JavaScript 语言的对象文本表示法子集。 Windows Internet Explorer 8 中的 JavaScript 引擎为本机 JSON 处理函数实现 ECMAScript 3.1 JSON 建议(它使用 Douglas Crockford 的 json2.js API)。

Internet Explorer 8 包含一个本机 JSON 对象,该对象符合 ES3.1 建议工作草案中所述的 JSON 支持。 某些网页会检测本机 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 通过引入具有两种内置方法的全局 JSON 对象(stringify分析)来包含对 JSON 的本机支持。 全局 JSON 对象在 JavaScript 引擎中定义,并在引擎初始化阶段创建。 为了保持向后兼容性,仅当网站使用最新版本的 JavaScript 功能时,才可使用“Internet Explorer 8 标准”布局(文档)模式。 此功能还可能会影响依赖于全局变量 JSON 或使用 json2.js的网页的行为。

可以重写全局 JSON 对象。 但是,当网页使用“Internet Explorer 8 标准版”布局(文档)模式时,它不再是未定义的对象。 由于 JSON 被 JavaScript 引擎实例化为全局名称,因此检查类似于“if(!this)。JSON)“的计算结果为 False,必须在用户代码中进行更改。

使用 json2.js 的网页可能会受到影响。 在极少数例外情况下,这些页面应更快地工作。 例外情况是 Internet Explorer 本机 JSON 实现与 json2.js之间的差异。 例如,在序列化期间,本机 JSON 实现会检测周期,并且不会以无限递归方式(如 json.js)。 有关这些异常的详细信息,请参阅 JavaScript 博客

有关详细信息,请参阅 JSON 文档版本控制以及 JavaScript 引擎的版本支持

使用兼容性视图 修复 Web 应用程序中的兼容性问题