JavaScript 对象表示法 (JSON)

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

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 对象来提供对 JSON 的本机支持:字符串化和分析。 全局 JSON 对象在 JavaScript 引擎中定义,并在引擎初始化阶段创建。 为了保持向后兼容性,此功能仅在网站使用最新版本的 JavaScript 功能时使用“Internet Explorer 8 Standard”布局 (文档) 模式时可用。 此功能还可能会影响依赖于全局变量 JSON 或使用 json2.js的网页的行为。

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

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

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

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