JSON.stringify函數在ie6/7中不支持,如何兼容?

方法一:

方法二:
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) + "}";
    }
};

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容