jQuery.parseJSON vs JSON.parse

Que*_*low 77 javascript jquery

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

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

dfs*_*fsq 112

这是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 );
},
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,jQuery将使用本机JSON.parse方法(如果可用),否则它将尝试使用它来评估数据new Function,这有点像eval.

所以,是的,你一定要使用jQuery.parseJSON.

  • 请注意,这是旧的,空字符串将不再返回null.它会抛出一个错误. (6认同)
  • 哇,很棒的答案!谢谢大家,我认为你的答案是最全面的. (3认同)
  • 是的,我认为应该更新这个答案,以表明几乎没有必要使用像jQuery这样的大型库.要报告Joseph the Dreamer的链接,以显示浏览器采用`JSON.parse`:http://caniuse.com/#search=json (3认同)

Jos*_*eph 10

根据jQuery

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

因此,如果浏览器上不存在本机实现,则意味着jQuery提供了JSON解析器.是具有(并且没有)JSON功能的浏览器的比较图表


小智 6

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

JSON的图书馆,它有把一个JavaScript对象成JSON字符串,这是从jQuery的缺失目前的方法的优点..


小智 5

如果您使用的是jQuery版本3(于2016年发布),则应使用,JSON.parse()因为jQuery.parseJSON() 已弃用

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