20

我需要一个 JSON polyfill 来支持 IE 7 和一些 IE 8 和 IE 9 模式。我应该选择JSON 2还是JSON 3?显然 JSON 3 是一种更现代的实现,但例如像html5please这样的网站甚至都没有提及它,而是推荐使用 JSON 2。

4

3 回答 3

14

我想知道同样的事情。JSON3 说

JSON 2 的变化

JSON 3...

  • 正确序列化原始包装对象(问题 #28)。
  • 序列化循环结构时抛出 a TypeError(JSON 2 递归直到调用堆栈溢出)。
  • 利用功能测试来检测损坏或不完整的本机JSON 实现(JSON 2 仅检查本机功能的存在)。测试只在运行时执行一次,因此在解析或序列化值时没有额外的性能成本。

与 JSON 2 相比,JSON 3...

  • toJSON()BooleanNumberString原型添加方法。这些不是任何标准的一部分,并且在实现的设计中是多余的stringify()
  • 添加toJSON()toISOString()方法到Date.prototype. 请参阅下面有关日期序列化的说明。

bestiejs.github.com/json3/

HTML5 请说

JSON 3是一个兼容几乎所有 JavaScript 平台的 polyfill。它是JSON 2的直接替代品,它使用功能测试来检测损坏和不完整的原生 JSON 实现,支持 异步模块加载器和 has感知优化器,并按照规范标准构建。

JSON 2是 Douglas Crockford 的一种较旧的替代 polyfill。

于 2012-08-03T22:11:55.997 回答
12

HTML5 Please更新了他们的 JSON 页面,将JSON 3作为主要的 polyfill 供使用,而 JSON 2 作为较旧的替代品位居次要地位。

于 2012-11-28T03:10:11.670 回答
5

如果您想提高页面在 IE7(可能是 8)中的性能,请使用 json2.js。我很高兴使用 json3 几个月,然后我看到了这个问题并做了一些研究。在我的 IE7 VM 中使用 json2.js,所有 jsperf 的执行速度都提高了 1-2 倍。

一个例子:

http://jsperf.com/json-vs-jquery-json/2

于 2013-10-25T00:44:49.957 回答