【问题标题】:Is JSON.parse supported by all major browsers? [duplicate]所有主流浏览器都支持 JSON.parse 吗? [复制]
【发布时间】:2011-06-21 23:41:10
【问题描述】:

可能重复:
Browser-native JSON support (window.JSON)

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

见:JSON in JavaScript

【问题讨论】:

标签: javascript json parsing cross-browser


【解决方案1】:

2013 年(及以后)的答案

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

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

2011 年的原始答案

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

但是,您只需要一个小脚本即可。 JSON 的发明者 Douglas Crockford 在his Github page 上有不少于三个供您选择:

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

使用适合您的。 :-)

几乎所有主要库(如jQueryPrototypeYUIClosureany of several others)也将提供 JSON 解析,尽管在某些情况下它可能只是 @ 987654337@.

【讨论】:

  • 谢谢!这是一个非常完整的答案。由于我使用的是非常可靠的服务器端编码系统,我可能只会说如果可用则使用 parse,如果不可用则使用 eval。重要的是,正如许多人所强调的那样,永远不要使用 eval,除非您知道您从自己的服务器而不是其他任何人的服务器获取完全编码的信息。
  • 如果页面在 IE7 模拟模式下运行,则 JSON 对象在 IE 8+ 中仍然不可用:(如果编写在其他客户端页面中运行的 JS 代码,需要注意一点。)
  • 更新:在 CanIUse 页面上单击“显示全部”按钮以查看支持 JSON 的旧浏览器,其中包括如上所述的 +IE8。 +1
【解决方案2】:

恐怕不会。但是,您可以使用json2 script written by Douglas Crockford

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

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

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

You can download json2.js here :)

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2013-04-15
    • 2011-09-15
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多