jQuery.parseJSON vs JSON.parse

时间:2012-04-28 09:30:57

标签: javascript jquery

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

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

7 个答案:

答案 0 :(得分:112)

以下是摘录from 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 );
},

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

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

答案 1 :(得分:10)

According to jQuery

  

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

因此,如果浏览器上不存在本机实现,则表示jQuery提供了JSON解析器。 here's a comparison chart具有(并且没有)JSON功能的浏览器

答案 2 :(得分:6)

JSON.parse()在某些浏览器上本机可用,而在其他浏览器上不可用,因此使用库更安全。正如其他受访者所指出的那样,JQuery实施效果很好。还有Douglas Crockford's JSON library,它使用本机实现(如果可用)。

JSON库的优势在于它有一个将JavaScript对象转换为JSON字符串的方法,目前jQuery中缺少这个字符串。

答案 3 :(得分:4)

如果你正在使用jQuery 3.0+,那么你应该使用JSON.parse因为jQuery.parseJSON已被弃用。

  

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

答案 4 :(得分:3)

我不了解性能,但使用jQuery方法肯定更安全,因为像ie7和lower这样的浏览器本身可能没有任何JSON功能。
这就是兼容性,就像你使用jQuery的每个方法而不是数组的本地forEach方法进行迭代一样。

答案 5 :(得分:2)

谈论效果最新答案为 JSON.parse

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

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

此外,{3.0}版本的jQuery.parseJson 已弃用,正如其他答案所述。

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

答案 6 :(得分:1)

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

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

注:

  jQuery 3.0中不推荐使用

jQuery.parseJSON。所以请使用原生的JSON.parse方法。