自定义JSON.stringify方法,兼容老版本浏览器

来源:互联网 发布:java中基本数据类型 编辑:程序博客网 时间:2024/06/06 18:05
/** * JSON 值可以是: * 数字(整数或浮点数) * 字符串(在双引号中) * 逻辑值(true 或 false) * 数组(在方括号中) * 对象(在花括号中) * null */var json = {stringify: function (val) {var stringify = '',curVal;if (val === null) {// nullreturn String(val);}switch (typeof val) {case 'number': // numbercase 'boolean': // booleanreturn String(val);case 'string': // stringreturn '"' + val + '"';case 'undefined': // undefinedcase 'function': // functionreturn undefined;}switch (Object.prototype.toString.call(val)) {case '[object Array]': // arraystringify += '[';for (var i = 0, len = val.length - 1; i < len; i++) {curVal = json.stringify(val[i]);stringify += (curVal === undefined ? null : curVal) + ",";}stringify += json.stringify(val[i]);stringify += ']';return stringify;case '[object Date]': // datereturn '"' + (val.toJSON ? val.toJSON() : val.toString()) + '"';case '[object RegExp]': // regular expressionreturn "{}";case '[object Object]': // objectstringify += '{';for (var i in val) {if (val.hasOwnProperty(i)) {curVal = json.stringify(val[i]);if (curVal !== undefined) {stringify += '"' + i + '":' + curVal + ',';}}}stringify = stringify.slice(0, -1);stringify += '}';return stringify;}}}// 测试代码console.log('Number');var number = json.stringify(8);console.log('stringify:', typeof number, number);//console.log(JSON.parse(number));//console.log(number === JSON.stringify(8));console.log('-----------------------');console.log('Boolean');var boolean = json.stringify(true);console.log('stringify:', typeof boolean, boolean);//console.log(JSON.parse(boolean));//console.log(boolean === JSON.stringify(true));console.log('-----------------------');console.log('Null');var _null = json.stringify(null);console.log('stringify:', typeof _null, _null);//console.log(JSON.parse(_null));//console.log(_null === JSON.stringify(null));console.log('-----------------------');console.log('Undefined');var _undefined = json.stringify(undefined);console.log('stringify:', typeof _undefined, _undefined);//console.log(JSON.parse(_undefined));//console.log(_undefined === JSON.stringify(undefined));console.log('-----------------------');console.log('String');var string = json.stringify('abc123');console.log('stringify:', typeof string, string);//console.log(JSON.parse(string));//console.log(string === JSON.stringify('abc123'));console.log('-----------------------');console.log('Array');var theArray = [1, undefined, function () {}, 'a'];var array = json.stringify(theArray);console.log('stringify:', typeof array, array);//console.log(JSON.parse(array));//console.log(array === JSON.stringify(theArray));console.log('-----------------------');console.log('Function');function fnTest() {console.log('function stringify');}var func = json.stringify(fnTest);console.log('stringify:', typeof func, func);//  console.log(JSON.parse(func));//console.log(func === JSON.stringify(fnTest));console.log('-----------------------');console.log('Object');var objTest = json.stringify({a: 1});console.log('stringify', typeof objTest, objTest);//console.log(objTest === JSON.stringify({//a: 1//}));console.log('-----------------------');console.log('RegExp');var RegExp = json.stringify(/^a$/g);console.log('stringify', typeof RegExp, RegExp);//console.log(RegExp === JSON.stringify(/^a$/g));console.log('-----------------------');console.log('Date');var theDate = new Date();var date = json.stringify(theDate);console.log('stringify', typeof date, date);//console.log(date === JSON.stringify(theDate));console.log('-----------------------');

1 0