/** * @file jquery.json.js * @description 用于支持json与其它类型互转的扩展方法 * @author knowmore * @date 2011-03-01 * @license share * @version 1.0.20110301 **/ /** * 将json字符串转换为对象的方法。 * * @public * @param json字符串 * @return 返回object,array,string等对象 **/ jquery.extend({ /** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */ evaljson: function(strjson) { return eval("(" + strjson + ")"); } }); /** * 将javascript数据类型转换为json字符串的方法。 * * @public * @param {object} 需转换为json字符串的对象, 一般为json 【支持object,array,string,function,number,boolean,regexp *】 * @return 返回json字符串 **/ jquery.extend({ tojsonstring: 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.tojsonstring(object[property]); if (value !== undefined) results.push(jquery.tojsonstring(property) + ':' + value); } return '{' + results.join(',') + '}'; break; case 'array': var results = []; for (var i = 0; i < object.length; i++) { var value = jquery.tojsonstring(object[i]); if (value !== undefined) results.push(value); } return '[' + results.join(',') + ']'; break; } } });