所有主流浏览器都支持 JSON.parse 吗?

IT技术 javascript json parsing cross-browser
2021-03-03 22:39:14

可能重复:
浏览器原生 JSON 支持 (window.JSON)

具体来说,是否JSON.parse(...)支持 IE7+、Firefox 2+、Chrome、Safari?

请参阅:JavaScript 中的 JSON

2个回答

2013 年(及以后)的答案

所有主流浏览器都支持 JSON.parse 吗?

差不多,是的(来源)。甚至 IE8 都有它(前提是您不在 IE7 仿真模式下)。如果您需要支持 IE7 及更早版本,请继续阅读。

2011年的原始答案

不,较旧的浏览器(例如 IE7)大多没有它。(更多:http : //caniuse.com/#search=JSON.parse

但是,您只需要一个小脚本。JSON 的发明者 Douglas Crockford 在他的 Github 页面上有不少于三个供您选择

  • json2.js: 提供JSON.parseJSON.stringify解析使用一些正则表达式来防御脚本注入攻击,然后将结果传递给eval. 这通常不被认为是一个很好的主意。
  • json_parse.js:一个不使用的递归下降解析器eval
  • json_parse_state.js:不使用eval.

使用适合你的。:-)

几乎任何主要库(如jQueryPrototypeYUIClosure其他几个库中的任何一个)也将提供 JSON 解析,尽管在某些情况下它可能只是eval.

谢谢!这是一个非常完整的答案。由于我使用的是非常可靠的服务器端编码系统,因此我可能只会说如果可用则使用 parse,否则使用 eval。重要的是,正如许多人所强调的那样,永远不要使用 eval,除非您知道您是从自己的服务器而不是其他任何人的服务器获得完全编码的信息。
2021-05-14 22:39:14
如果页面在 IE7 模拟模式下运行,则 JSON 对象在 IE 8+ 中仍然不可用: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> (有点问题知道是否编写在其他客户端页面中运行的 JS 代码。)
2021-05-14 22:39:14
更新:在 CanIUse 页面上,单击“全部显示”按钮以查看支持 JSON 的旧浏览器,其中包括上述 +IE8。+1
2021-05-15 22:39:14

恐怕没有。但是,您可以使用Douglas Crockford 编写的 json2 脚本

以下是 John Resig(jQuery 的创建者)对此的评论:

JSON2.js - 去年年底,Crockford 悄悄发布了他的 JSON API 的新版本,取代了他现有的 API。重要的区别在于它使用单个基础对象 (JSON) 而不是扩展所有本机对象原型(嘘!)。

http://ejohn.org/blog/the-state-of-json/

你可以在这里下载 json2.js :)