方法一:
方法二:
if(!window.JSON){
window.JSON = {
stringify: function(obj){
var result = "";
for(var key in obj){
if(typeof obj[key] == "string"){
// 如果屬性值是String類型,屬性值需要加上雙引號
result += """ + key + "":"" + obj[key] + "",";
}else if(obj[key] instanceof RegExp){
// 如果屬性是正則表達式,屬性值只保留一對空大括號{}
result += """ + key + "":{},";
}else if(typeof obj[key] == "undefined" || obj[key] instanceof Function){
// 如果屬性值是undefined, 該屬性被忽略。忽略方法。
}else if(obj[key] instanceof Array){
// 如果屬性值是數組
result += """ + key + "":[";
var arr = obj[key];
for(var item in arr){
if(typeof arr[item] == "string"){
// 如果數組項是String類型,需要加上雙引號
result += """ + arr[item] + "",";
}else if(arr[item] instanceof RegExp){
// 如果屬數組項是正則表達式,只保留一對空大括號{}
result += "{},";
}else if(typeof arr[item] == "undefined" || arr[item] instanceof Function){
// 如果數組項是undefined, 則顯示null。如果是函數,則顯示null?。
result += null +",";
}else if(arr[item] instanceof Object){
//如果數組項是對象(非正則,非函數,非null),調用本函數處理
result += this.stringify(arr[item]) +",";
}else{
result += arr[item] + ",";
}
}
result = result.slice(0,-1)+"],"
}else if(obj[key] instanceof Object){
// 如果屬性值是對象(非null,非函數,非正則),調用本函數處理
result += "\"" + key + "\":" + this.stringify(obj[key]) + ",";
}else{
result += "\"" + key + "\":" + obj[key] + ",";
}
}
// 去除最后一個逗號,兩邊加{}
return "{" + result.slice(0,-1) + "}";
}
};
}