JavaScript原生代码处理JSON的一些高频次方法合集
生活随笔
收集整理的這篇文章主要介紹了
JavaScript原生代码处理JSON的一些高频次方法合集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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, ","));}, /**拼接兩個json*/ mergeJsonObject: function (json1, json2) {for (var i in json1) {json2[i] = json1[i];}return json2;},
/**將JSON對象轉換為字符串*//** param 將要轉為URL參數字符串的對象,key URL參數字符串的前綴, encode true/false 是否進行URL編碼 默認為true return URL參數字符串,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;/*測試用例*//* var obj = {a: '1', 'b': {c: '3'}, d: [{e: '4'}]}; alert(json.toGetString(obj)); alert(json.toGetString(obj, 'CLASS'));*/},
/**JSON轉GET請求參數(只針對包含一個層級的json格式)*/ toGetStringForOneDepthLevel: function (json, firstStr='?') {return firstStr+JSON.stringify(json).replace(/\t|\n|\r|\"|\{|\}/g, "").replace(/,/g, "&").replace(/:/g, "=");},
/**GET請求參數轉JSON(只針對包含一個層級的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對象一級屬性個數*/ length: function (obj) {var count = 0;for (var i in obj) {count++;}return count;},//比較兩個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);//默認為true},compareObj(objA, objB, flag) {for (var key in objA) {if (!flag) //跳出整個循環break;if (!objB.hasOwnProperty(key)) {flag = false;break;}if (!this.isArray(objA[key])) { //子級不是數組時,比較屬性值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) //這里跳出循環是為了不讓遞歸繼續break;flag = this.compareObj(oA[k], oB[k], flag);}}}return flag;}
};
//去掉值為null或undefined的對象屬性
Object.keys(d).forEach(k=>d[k]==null&&delete d[k]);//去掉值為null或undefined或''的對象屬性
Object.keys(d).forEach(k=>(d[k]==null||d[k]==='')&&delete d[k]);
總結
以上是生活随笔為你收集整理的JavaScript原生代码处理JSON的一些高频次方法合集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强哥原创管理方法论之“金融管理学”
- 下一篇: 高亮提示、聚焦控件并滚动到浏览器中干好可