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的一些高频次方法合集相关推荐

  1. java小程序小游戏代码贪吃蛇,附高频面试题合集

    One:JVM实践思维图(完整版) Two: 走近Java 概述+ Java技术体系+Java发展史+Java虚拟机家族:(Sun Classic/Exact VM.HotSpot VM.Mobile ...

  2. JavaScript原生代码编写选项卡Tab页跳转功能

    本文主要介绍使用 JavaScript 原生代码编写选项卡Tab页的跳转功能. 一.先来看看效果图 二.准备文字素材 文字素材选择诗经里面的三首古诗,分别是关雎.蒹葭和采薇 <关雎> 关关 ...

  3. javascript中将字符串转换为json格式的三种方法

    摘自:http://www.phpzixue.cn/detail1128.shtml javascript中将字符串转换为json格式的三种方法:  json在我们js的开发过程中经常会用到像在使用a ...

  4. h5调用原生App的方法合集

    h5调用原生App的方法合集 1.调用原生关闭函数 let u = navigator.userAgent let isAndroid = u.indexOf('Android') > -1 | ...

  5. 2000-2020全要素生产率OP法+LP法+OLS和固定效应法三种方法合集含原始数据和计算过程Stata代码

    2000-2020全要素生产率OP法+LP法+OLS和固定效应法三种方法合集含原始数据和计算过程Stata代码 1.时间:OP法:2008-2020年.LP法2000-2020年.OLS和固定效应法2 ...

  6. javascript原生代码取单选框的值

    网上搜索到的,项目中正好用到,先记下来,以后直接从自己的博客上复制粘贴!!! //取单选框选择中的值,传入单选框的name function getRadioBoxValue(radioName) { ...

  7. JS + ES6 高频面试题合集

    目录 js数据类型有哪些 基本数据类型 引用数据类型 内置对象有哪些 数组方法有哪些 数组去重几种方式 1--双重for循环 2--indexOf()方法 3--splice()方法 4--filte ...

  8. 微信小程序 高频面试题合集

    目录 小程序中如何进行接口请求?会不会跨域,为什么 小程序的常用命令有哪些 引用数据 逻辑渲染 列表渲染 引用 你认为微信小程序的优点是什么,缺点是什么 微信小程序中的js和浏览器中和node中的区别 ...

  9. js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers

    测试demo 调用原生关闭函数 let u = navigator.userAgent let isAndroid = u.indexOf('Android') > -1 || u.indexO ...

最新文章

  1. Linux漏洞建议工具Linux Exploit Suggester
  2. 【并发编程】创建线程的四种方式
  3. cront 的应用(摘自鸟哥的私房菜)
  4. [整理]ADB命令行学习笔记
  5. Python面向对象---类的基本使用
  6. PURE DORM IS GREAT
  7. windows 2008 开机启动 Docker Toolbox 并运行容器
  8. javascript 控制弹出窗口
  9. 基于springboot+shiro一套可落地实施安全认证框架整合
  10. agile java_《Agile Java》阅读笔记
  11. 系统升级时,数据库脚本执行注意事项,血的教训
  12. 名人带货成潮流,直播电商是否走上了岔路?
  13. aardio - 时钟例程
  14. 大学生成人插画培训机构盘点
  15. 网易云音乐歌单制作词云图
  16. 基本算法-回溯法(迷宫问题)
  17. 如果我们现在要做一个库存盘点的系统,你怎么设计表结构,设计哪些表
  18. python--表白小程序
  19. 【笔记】Spring - Spring Data 整合:SpringBoot、Redis
  20. cron crontab anacron anacrontab Linux下的计划任务

热门文章

  1. java实体属性对应mysql和SQL Server 和Oracle 数据类型对应
  2. 【转载】 stm32之PWM
  3. (一)Java基础巩固
  4. [PHP]php基础练习题学习随笔
  5. 【内核】嵌入式linux内核的五个子系统
  6. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...
  7. AlexNet中的局部响应归一化(LRN)
  8. TensorFlow平台搭建
  9. usaco Cow Pedigrees
  10. 人脸服务器如何与门禁系统对接,人脸识别门禁系统终端设备接口说明