国产探花免费观看_亚洲丰满少妇自慰呻吟_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的實例代碼講解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 皮山县| 徐水县| 斗六市| 禹州市| 讷河市| 马鞍山市| 白城市| 英吉沙县| 嘉兴市| 武邑县| 通州市| 柘荣县| 晴隆县| 明光市| 二手房| 海伦市| 宾川县| 察哈| 延长县| 济源市| 龙岩市| 张家川| 五指山市| 平度市| 耿马| 本溪| 中西区| 邵武市| 白水县| 革吉县| 临泉县| 长治市| 驻马店市| 建德市| 上杭县| 沾益县| 阳山县| 特克斯县| 华池县| 克什克腾旗| 晋城|