js object에서 json 문자열로 변환

3311 단어 object
1. 오브젝트를 사용합니다.constructor 판단 object 형식



function Serialize(obj) {
		switch (obj.constructor) {
		case Object:
			var str = "{";
			for ( var o in obj) {
				str += o + ":" + Serialize(obj[o]) + ",";
			}
			if (str.substr(str.length - 1) == ",")
				str = str.substr(0, str.length - 1);
			return str + "}";
			break;
		case Array:
			var str = "[";
			for ( var o in obj) {
				str += Serialize(obj[o]) + ",";
			}
			if (str.substr(str.length - 1) == ",")
				str = str.substr(0, str.length - 1);
			return str + "]";
			break;
		case Boolean:
			return "\"" + obj.toString() + "\"";
			break;
		case Date:
			return "\"" + obj.toString() + "\"";
			break;
		case Function:
			break;
		case Number:
			return "\"" + obj.toString() + "\"";
			break;
		case String:
			return "\"" + obj.toString() + "\"";
			break;
		}
	}


2. typeof로 유형을 판단하고 function 유형을 필터링

function Serialize(obj) {
		//var result="";
		//alert(typeof obj);
		//alert(typeof(typeof obj));
		switch (typeof obj) {
		case 'object':
			//alert("Object!!!!");
			var str = "{";
			for ( var o in obj) {
			//	alert(o.toString);
				if(typeof obj[o] !='function') 
				str += "\"" + o +"\"" + ":" + Serialize(obj[o]) + ",";
			}
			if (str.substr(str.length - 1) == ",")
				str = str.substr(0, str.length - 1);
			return str + "}";
			break;
		case 'array':
			var str = "[";
			for ( var o in obj) {
				str += Serialize(obj[o]) + ",";
			}
			if (str.substr(str.length - 1) == ",")
				str = str.substr(0, str.length - 1);
			return str + "]";
			break;
		case 'boolean':
			return "\"" + obj.toString() + "\"";
			break;
		case 'date':
			return "\"" + obj.toString() + "\"";
			break;
			
		case 'function':
			//alert(obj.toString);
			return "\"\"";
			break;
			
		case 'number':
			return "\"" + obj.toString() + "\"";
			break;
		case 'string':
			return "\"" + obj.toString() + "\"";
			break;
		case 'undefined':
			return "\"\"";
			break;	
		}
		//alert(result);
		//return result;
	}

문제가 발생했습니다. typeof는array 유형을 판단할 수 없습니다.
그래서 Object에서array 형식인지 아닌지 판단합니다.
그룹 여부를 판단하는 방법은constructor를 제외하고는 다음과 같다.
function isArray(o) {
    return Object.prototype.toString.call(o) === '[object Array]';
}
혹은
instanceof
참조:
http://www.cnblogs.com/mofish/p/3388427.html

좋은 웹페이지 즐겨찾기