国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS實現JSON.stringify的實例代碼講解

2019-11-19 17:42:06
字體:
來源:轉載
供稿:網友

 JSON.stringify是瀏覽器高版本帶的一個將JS的Objtect對象轉換為JSON字符串的一個方法,不過再IE6下面,并不存在JSON這一對象,因此,用到此方法時,需要寫一套兼容性的代碼。 JSON.stringify的一些規則以及注意點:當對象為數字,null,boolean的時候,直接轉換為相應的字符串就可以了。 但是string,function,undefined,object,array等,需要特殊處理。

1.undefined,該類型使用JSON.stringify處理的時候,如果對象就是undefined,將會輸出"undefined",如果對象是數組的元素,那么將會變成null,比如:[undefined],stringify之后變成了"[null]";如果該對象是object的元素,那么該屬性將當作不存在,不輸出,比如{a:1,b:undefined},stringify之后是"{/"a/":1},B屬性直接拋棄。

2.字符串在拼接的時候需要把內部的雙引號處理掉

代碼如下

/**  * JSON stringify的實現  * @author norkts<norkts@gmail.com>  * @version 1.0 2015-11-24 15:11 實現了基本功能  * @version 1.1 2015-11-24 15:19 norkts 增加了JSON.stringify的兼用代碼實現  * @version 1.2 2015-11-24 15:49 norkts 修改數組indexOf在IE下不兼容的寫法,修改了undefined值的特殊處理  */ (function(NS){   //簡單類型  var simpleTypes = ["number", "boolean", "undefined", "string", "function"];    //JSON.stringify的主函數  function stringify(object){   var type = typeof object;      //如果是簡單類型,則直接返回簡單類型的結果   if(indexOf(simpleTypes, type) > -1){    return parseSimpleObject(object);   }    //數組對象的   if(object instanceof Array){    var len = object.length;    var resArr = [];    for(var i = 0; i < len; i++){     var itemType = typeof object[i];     if(indexOf(simpleTypes, itemType) > -1){       //undefined特殊處理,數組中變成null      if(itemType != "undefined"){       resArr.push(parseSimpleObject(object[i]));      }else{       resArr.push("null");      }           }else{      //遞歸處理JS數組中的復雜元素      resArr.push(stringify(object[i]));     }    }        return "[" + resArr.join(",") + "]";   }      //普通object對象   if(object instanceof Object){    if(object == null){     return "null";    }        var resArr = [];        for(var name in object){     var itemType = typeof object[name];     if(indexOf(simpleTypes, itemType) > -1){      //undefined特殊處理,object中不編碼      if(itemType != "undefined"){       resArr.push("/"" + name + "/":" + parseSimpleObject(object[name]));       }     }else{      resArr.push("/"" + name + "/":" + stringify(object[name]));     }    }        return "{" + resArr.join(",") + "}";   }  }    function parseSimpleObject(object){   var type = typeof object;   if(type == "string" || type == "function"){    return "/"" + object.toString().replace("/"", "http:///"") + "/"";   }      if(type == "number" || type == "boolean"){    return object.toString();   }      if(type == "undefined"){    return "undefined";   }      return "/"" + object.toString().replace("/"", "http:///"") + "/"";  }    function indexOf(arr, val){   for(var i = 0; i < arr.length; i++){    if(arr[i] === val){     return i;    }   }      return -1;  }    /**   * 將stringify做二次封裝   * @param object 要處理的對象   *   */  NS.stringify = function(object, isEncodeZh){   var res = stringify(object);   if(isEncodeZh){    var encodeRes = "";    for(var i = 0; i < res.length; i++){     if(res.charCodeAt(i) < 0xff){      encodeRes += res[i];     }else{      encodeRes += "http://u" + res.charCodeAt(i).toString(16);     }    }    res = encodeRes;   }      return res;  }; })(window); 

以上所述是小編給大家介紹的JS實現JSON.stringify的實例代碼講解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上饶市| 通江县| 广东省| 信宜市| 屏山县| 普定县| 台中市| 扎赉特旗| 连云港市| 六枝特区| 本溪市| 陆丰市| 柏乡县| 周宁县| 宜昌市| 禹城市| 班玛县| 铜梁县| 莱芜市| 林口县| 临桂县| 涿州市| 正阳县| 湟源县| 临猗县| 马龙县| 嵊泗县| 桐柏县| 鹤山市| 昌都县| 延安市| 定边县| 东阳市| 黄骅市| 宁晋县| 上犹县| 彭泽县| 广汉市| 广灵县| 丹东市| 桑日县|