我已经看到一些浏览器通过window.JSON
对象安全高效地支持对象的JSON解析/序列化,但很难获得详细信息。有人能指出正确的方向吗?这个对象公开的方法是什么?在什么浏览器下支持它?
发布于 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的更多详细信息。
发布于 2012-03-12 09:38:25
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 = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
发布于 2011-10-21 07:23:10
[扩展musicfreak注释]
如果您使用的是jQuery,请使用parseJSON
var obj = jQuery.parseJSON(data)
它在内部检查浏览器是否支持.JSON.parse,并(如果可用)调用本机window.JSON.parse。
如果不是,则进行自身解析。
https://stackoverflow.com/questions/891299
复制相似问题