本地JSON支持(window.JSON)

我已经看到一些浏览器通过window.JSON对象安全高效地支持JSON解析/序列化对象的一些浏览器,但细节很难得到。 任何人都可以指出正确的方向吗? 这个Object暴露的方法是什么? 它支持哪些浏览器?


所有现代浏览器都支持本地JSON编码/解码(Internet Explorer 8+,Firefox 3.1 +,Safari 4+和Chrome 3+)。 基本上, JSON.parse(str)将解析的JSON字符串str并返回一个对象,和JSON.stringify(obj)将返回对象的JSON表示obj

关于MDN文章的更多细节。


jQuery-1.7.1.js - 555行...

parseJSON: function( data ) {
    if ( typeof data !== "string" || !data ) {
        return null;
    }

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

    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( 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 );
}





rvalidchars = /^[],:{}s]*$/,

rvalidescape = /(?:["/bfnrt]|u[0-9a-fA-F]{4})/g,

rvalidtokens = /"[^"nr]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]?d+)?/g,

rvalidbraces = /(?:^|:|,)(?:s*[)+/g,

使用json2.js的优点是,如果浏览器还没有安装解析器,它将只安装一个解析器。 您可以保持与旧浏览器的兼容性,但如果可用,则使用本机JSON解析器(它更安全,速度更快)。

具有原生JSON的浏览器:

  • IE8 +
  • Firefox 3.1+
  • Safari 4.0.3+
  • Opera 10.5+
  • G。

    链接地址: http://www.djcxy.com/p/5425.html

    上一篇: native JSON support (window.JSON)

    下一篇: Why is if True slower than if 1?