原文地址:http://hi.baidu.com/124232323/blog/item/07f9fd954b6fe540d0135e66.html
//扩展jQuery对json字符串的转换jQuery.extend({ /** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */ evalJSON: function(strJson) { return eval("(" + strJson + ")"); }});jQuery.extend({ /** * @see 将javascript数据类型转换为json字符串 * @param 待转换对象,支持object,array,string,function,number,boolean,regexp * @return 返回json字符串 */ toJSON: function(object) { var type = typeof object; if ('object' == type) { if (Array == object.constructor) type = 'array'; else if (RegExp == object.constructor) type = 'regexp'; else type = 'object'; } switch (type) { case 'undefined': case 'unknown': return; break; case 'function': case 'boolean': case 'regexp': return object.toString(); break; case 'number': return isFinite(object) ? object.toString() : 'null'; break; case 'string': return '"' + object.replace(/(//|/")/g, "//$1").replace(//n|/r|/t/g, function() { var a = arguments[0]; return (a == '/n') ? '//n': (a == '/r') ? '//r': (a == '/t') ? '//t': "" }) + '"'; break; case 'object': if (object === null) return 'null'; var results = []; for (var property in object) { var value = jQuery.toJSON(object[property]); if (value !== undefined) results.push(jQuery.toJSON(property) + ':' + value); } return '{' + results.join(',') + '}'; break; case 'array': var results = []; for (var i = 0; i < object.length; i++) { var value = jQuery.toJSON(object[i]); if (value !== undefined) results.push(value); } return '[' + results.join(',') + ']'; break; } }});示例:var obj = { name: "sean", friend: ["fans", "bruce", "wawa"], action: function() { alert("gogogog") }, boy: true, age: 26, reg: //b([a-z]+) /1/b/gi, child: { name: "none", age: -1 }};var json = $.toJSON(obj);var objx = $.evalJSON(json); |