JavaScript原生代码处理JSON的一些高频次方法合集
生活随笔
收集整理的這篇文章主要介紹了
JavaScript原生代码处理JSON的一些高频次方法合集
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
let json = {/**判斷JSON格式*/ isJSON: function (str) {if (typeof str == "string") {try {var obj = JSON.parse(str);if (typeof obj == "object" && obj) {return true;} else {return false;}} catch (e) {return false;}} else if (typeof str == "object") {return Object.prototype.toString.call(obj).toLocaleLowerCase() == "[object object]" && !obj.length;}return false;},
/**合并string類型的json*/ mergeJsonString: function () {return JSON.parse((jsonStr1 + jsonStr2).replace(/}{/g, ","));}, /**拼接兩個(gè)json*/ mergeJsonObject: function (json1, json2) {for (var i in json1) {json2[i] = json1[i];}return json2;},
/**將JSON對(duì)象轉(zhuǎn)換為字符串*//** param 將要轉(zhuǎn)為URL參數(shù)字符串的對(duì)象,key URL參數(shù)字符串的前綴, encode true/false 是否進(jìn)行URL編碼 默認(rèn)為true return URL參數(shù)字符串,index不需要傳參*/ toGetString: function (param, key, encode, index, firstStr='?') {index || (index = 0);index++;if (param == null) return;var ps = "";var t = typeof (param);if (t == "string" || t == "number" || t == "boolean") {ps += "&" + key + "=" + ((encode == null || encode) ? encodeURIComponent(param) : param);} else {for (var i in param) {var k = key == null ? i : key + (param instanceof Array ? "[" + i + "]" : "." + i);ps += json.toGetString(param[i], k, encode, index, firstStr);}}index == 1 && (ps = ps.replace("&", firstStr));return ps;/*測(cè)試用例*//* var obj = {a: '1', 'b': {c: '3'}, d: [{e: '4'}]}; alert(json.toGetString(obj)); alert(json.toGetString(obj, 'CLASS'));*/},
/**JSON轉(zhuǎn)GET請(qǐng)求參數(shù)(只針對(duì)包含一個(gè)層級(jí)的json格式)*/ toGetStringForOneDepthLevel: function (json, firstStr='?') {return firstStr+JSON.stringify(json).replace(/\t|\n|\r|\"|\{|\}/g, "").replace(/,/g, "&").replace(/:/g, "=");},
/**GET請(qǐng)求參數(shù)轉(zhuǎn)JSON(只針對(duì)包含一個(gè)層級(jí)的json格式)*/ fromGetStringForOneDepthLevel: function (getString) {return JSON.parse("{\"" + getString.substr(1 + getString.indexOf("?")).replace(/&/g, "\",\"").replace(/=/g, "\":\"") + "\"}");},
/**格式化json字符串格式*/string: function (json) {return JSON.stringify(json, null, 4);},
/**獲取json對(duì)象一級(jí)屬性個(gè)數(shù)*/ length: function (obj) {var count = 0;for (var i in obj) {count++;}return count;},//比較兩個(gè)json是否相同isObj(object) {return object && typeof (object) == "object" && Object.prototype.toString.call(object).toLowerCase() == "[object object]";},isArray(object) {return object && typeof (object) == "object" && object.constructor == Array;},getLength(object) {var count = 0;for (var i in object) count++;return count;},compare(objA, objB) {if (!this.isObj(objA) || !this.isObj(objB)) return false; //判斷類型是否正確if (this.getLength(objA) != this.getLength(objB)) return false; //判斷長度是否一致return this.compareObj(objA, objB, true);//默認(rèn)為true},compareObj(objA, objB, flag) {for (var key in objA) {if (!flag) //跳出整個(gè)循環(huán)break;if (!objB.hasOwnProperty(key)) {flag = false;break;}if (!this.isArray(objA[key])) { //子級(jí)不是數(shù)組時(shí),比較屬性值if (objB[key] != objA[key]) {flag = false;break;}} else {if (!this.isArray(objB[key])) {flag = false;break;}var oA = objA[key], oB = objB[key];if (oA.length != oB.length) {flag = false;break;}for (var k in oA) {if (!flag) //這里跳出循環(huán)是為了不讓遞歸繼續(xù)break;flag = this.compareObj(oA[k], oB[k], flag);}}}return flag;}
};
//去掉值為null或undefined的對(duì)象屬性
Object.keys(d).forEach(k=>d[k]==null&&delete d[k]);//去掉值為null或undefined或''的對(duì)象屬性
Object.keys(d).forEach(k=>(d[k]==null||d[k]==='')&&delete d[k]);
總結(jié)
以上是生活随笔為你收集整理的JavaScript原生代码处理JSON的一些高频次方法合集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强哥原创管理方法论之“金融管理学”
- 下一篇: 高亮提示、聚焦控件并滚动到浏览器中干好可