Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了自定义JSON.stringify方法,兼容老版本浏览器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
/**
 * JSON 值可以是:
 * 数字(整数或浮点数)
 * 字符串(在双引号中)
 * 逻辑值(true 或 false)
 * 数组(在方括号中)
 * 对象(在花括号中)
 * null
 */

var json = {
	Stringify: function (val) {
		var Stringify = '',curVal;

		if (val === null) {		// null
			return String(val);
		}
		
		switch (typeof val) {
			case 'number': // number
			case 'Boolean': // Boolean
				return String(val);
	
			case 'String': // String
				return '"' + val + '"';
			
			case 'undefined': // undefined
			case 'function': // function
				return undefined;
		}
	
		switch (Object.prototype.toString.call(val)) {
			case '[object Array]': // array
				Stringify += '[';
	
				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]': // date
				return '"' + (val.toJSON ? val.toJSON() : val.toString()) + '"';
	
			case '[object RegExp]': // regular expression
				return "{}";
	
			case '[object Object]': // object
				Stringify += '{';
	
				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('-----------------------');

大佬总结

以上是大佬教程为你收集整理的自定义JSON.stringify方法,兼容老版本浏览器全部内容,希望文章能够帮你解决自定义JSON.stringify方法,兼容老版本浏览器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。