首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >浏览器原生JSON支持(window.JSON)

浏览器原生JSON支持(window.JSON)
EN

Stack Overflow用户
提问于 2009-05-21 03:33:58
回答 4查看 68.9K关注 0票数 95

我已经看到一些浏览器通过window.JSON对象安全高效地支持对象的JSON解析/序列化,但很难获得详细信息。有人能指出正确的方向吗?这个对象公开的方法是什么?在什么浏览器下支持它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-21 03:40:07

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

有关MDN article的更多详细信息。

票数 112
EN

Stack Overflow用户

发布于 2012-03-12 09:38:25

jQuery-1.7.1.js - 555行...

代码语言:javascript
复制
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 = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,

rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
票数 30
EN

Stack Overflow用户

发布于 2011-10-21 07:23:10

[扩展musicfreak注释]

如果您使用的是jQuery,请使用parseJSON

代码语言:javascript
复制
var obj = jQuery.parseJSON(data)

它在内部检查浏览器是否支持.JSON.parse,并(如果可用)调用本机window.JSON.parse。

如果不是,则进行自身解析。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/891299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档