81

jQuery.parseJSON并且JSON.parse是执行相同任务的两个函数。如果已经加载了 jQuery 库,那么在性能方面 usingjQuery.parseJSON会比 using 更好JSON.parse吗?

如果是,为什么?如果没有,为什么不呢?

4

7 回答 7

113

这是jQuery 1.9.1的摘录:

parseJSON: function( data ) {
    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( data );
    }

    if ( data === null ) {
        return data;
    }

    if ( typeof data === "string" ) {

        // Make sure leading/trailing whitespace is removed (IE can't handle it)
        data = jQuery.trim( data );

        if ( data ) {
            // Make sure the incoming data is actual JSON
            // Logic borrowed from http://json.org/json2.js
            if ( rvalidchars.test( data.replace( rvalidescape, "@" )
                .replace( rvalidtokens, "]" )
                .replace( rvalidbraces, "")) ) {

                return ( new Function( "return " + data ) )();
            }
        }
    }

    jQuery.error( "Invalid JSON: " + data );
},

如您所见,如果本地JSON.parse方法可用,jQuery 将使用本地方法,否则它将尝试使用 评估数据new Function,这有点像eval.

所以是的,你绝对应该使用jQuery.parseJSON.

于 2012-04-28T09:35:48.647 回答
10

根据 jQuery

在浏览器提供 JSON.parse 的本机实现的地方,jQuery 使用它来解析字符串。

因此,这意味着如果浏览器上不存在本机实现,jQuery 会提供 JSON 解析器。这是具有(和不具有)JSON 功能的浏览器的比较表

于 2012-04-28T09:33:25.287 回答
7

如果您使用的是 jQuery 版本 3(2016 年发布),那么您应该使用JSON.parse()because jQuery.parseJSON() has been deprecated

从 jQuery 3.0 开始,不推荐使用 $.parseJSON。要解析 JSON 对象,请改用本机 JSON.parse 方法。

于 2016-07-14T22:06:21.167 回答
6

JSON.parse() 在某些浏览器上原生可用,在其他浏览器上不可用,因此使用库更安全。正如其他受访者所指出的,JQuery 实现运行良好。还有Douglas Crockford 的 JSON 库,如果可用,它使用本机实现。

JSON 库的优点是它具有将 JavaScript 对象转换为 JSON 字符串的方法,目前 jQuery 缺少这种方法。

于 2012-10-26T18:50:04.713 回答
3

我不知道性能,但是使用 jQuery 方法肯定更安全,因为像 ie7 和更低版本的一些浏览器本身可能没有任何 JSON 功能。
这都是关于兼容性的,就像您使用 jQuery 的 each 方法而不是数组的本机forEach方法进行迭代一样。

于 2012-04-28T09:33:54.983 回答
2

谈到性能最新的答案是JSON.parse

现在每个浏览器支持原生 JSON 对象,所以选择. 您可以在此处查看支持表:http: //caniuse.com/#feat=jsonJSON.parse

您还可以在 GitHub 上的 JQuery 存储库中搜索此别名外观:https ://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON

此外,如此处其他答案所述,3.0+ 版本jQuery.parseJson弃用

如果您是旧的 JQuery 版本 + 如果您想为非常旧的浏览器提供支持(通常不推荐),您应该只使用 jQuery 的版本。

于 2015-07-09T19:08:13.207 回答
1

jQuery 在内部使用JSON.parse来解析 JSON 文件。因此在大多数情况下它没有任何区别。

但是一些较旧的浏览器不支持JSON.parse功能。在这种情况下使用jQuery.parseJSON是有益的,因为 jQuery 可以使用自己的函数处理 JSON。

笔记:

jQuery.parseJSON已从 jQuery 3.0 弃用。所以请使用本机JSON.parse方法。

于 2017-01-10T08:58:13.953 回答