如何比较两个json
【面试被问了2次】
先定义3个方法
判断是否是object
判断是否是数据
判断长度
function isObj(object) {
return object && typeof(object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";
}
function isArray(object) {
return object && typeof(object) == 'object' && object.constructor == Array;
}
function getLength(object) {
var count = 0;
for(var i in object) count++;
return count;
}
var jsonObjA = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [{
"Age": "100"
},
{
"Box": [{
"Height": "100"
},
{
"Weight": "200"
}
]
}
],
"Address": "马栏山"
}
var jsonObjB = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [{
"Age": "100"
},
{
"Box": [{
"Height": "100"
},
{
"Weight": "200"
}
]
}
],
"Address": "马栏山二号"
}
function Compare(objA, objB) {
if(!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确
if(getLength(objA) != getLength(objB)) return false; //判断长度是否一致
return CompareObj(objA, objB, true); //默认为true
}
function CompareObj(objA, objB, flag) {
for(var key in objA) {
if(!flag) //跳出整个循环
break;
if(!objB.hasOwnProperty(key)) {
flag = false;
break;
}
if(!isArray(objA[key])) { //子级不是数组时,比较属性值
if(objB[key] != objA[key]) {
flag = false;
break;
}
} else {
if(!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 = CompareObj(oA[k], oB[k], flag);
}
}
}
return flag;
}
var result = Compare(jsonObjA, jsonObjB);
console.log(result); // true or false
转载于:https://my.oschina.net/u/3057758/blog/1541367
如何比较两个json相关推荐
- java json 去重_js操作两个json数组合并、去重,以及删除某一项元素
两个json数组合并去重,以及删除某一项元素 let ha = [ {id:'H',name:'3'}, {id:'A',name:'6'}, {id:'B',name:'14'}, {id:'C', ...
- JS:两个json数组合并、去重,以及删除某一项元素
两个json数组合并去重,以及删除某一项元素 let ha = [{id:'H',name:'3'},{id:'A',name:'6'},{id:'B',name:'14'},{id:'C',name ...
- python怎么验证两个json是不是一样_比较Python中的两个JSON树
我有这种JSON树的文件夹结构.有什么方法可以将它与同类的Json树进行比较以获得差异(文件丢失或不同的文件属性(日期,crc,..)),并将其作为具有不同/缺失文件名称的列表返回.比较Python中 ...
- 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)
本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...
- python快速比较两个json_Python 比较两个json的方法
在测试过程中经常会对比两个json的异同,如果当json串较长时,一个一个的对比显然是很浪费时间的. 所以写一个比较json异同的测试方法是很有必要的. 下面介绍一下比较json异同的两种方法,以及测 ...
- JavaScript 怎么合并两个JSON,并覆盖重复键
如何合并两个JSON,并覆盖重复键 xxx={a:{a1:"a1"},b:{b1:{b11:1,b12:2}}}; yyy={b:{b1:{b11:4,b12:5}}}; 把 xx ...
- 比较两给json是否一致
比较两给json是否一致 直接上代码 直接上代码 package com.test.core.utils;import com.google.gson.Gson; import com.google. ...
- js比较两个JSON对象,返回变化值
废话不多说,直接上干货. let utils = {/*** 比较两个json(新json与老json)的不同,并返回 不同时的旧值(old_val)和新值(new_val)* @param {*} ...
- python校验两个json体
问题: 有两个json体,可是,需要验证json之间的内容有什么差异,然后,就想写一个json,尝试 桌面创建一个python文件,和创建的python文件项目目录下创建 json1.txt json ...
- es6如何修改json数组里的某个值_如何通过id使用纯Javascript(ES6)合并两个json对象值...
我有两个Javascript对象数组,并且想要将具有相同"ObjID"的两个Javascript对象的属性合并为一个Javascript对象.如何通过id使用纯Javascript ...
最新文章
- mac80211解析之发送速率控制
- python 单元测试_Python系列之单元测试框架【unittest】
- oralce用存储过程实现分页 以及 用java调用这个存储过程的代码
- oracle 优化分组 sql语句,Oracle SQL语句之常见优化方法 五
- 少儿编程100讲轻松学python(十一)-python如何保留小数点位数
- 手机还是不要随便更新的好
- 机器学习知识总结系列- 基本概念(1-0)
- java基础 泛型类的定义
- VMWare Fusion 安装 Centos7操作系统
- android中如何取得docx文件,如何显示或读取DOCX文件(how to Show or Read docx file)
- BI分析工具软件有哪些
- 小程序开发-用户对自己信息的更改
- ez4w.com的5折优惠码
- Centos下netstat的使用
- 【转】Android 自己收集的开源项目和文章集合(持续更新至2018.12.17)
- 2017年原生广告程序化购买将成为新趋势
- tvs管参数数解读_浅析TVS管的特性及参数
- 测开- Junit 单元测试框架
- C# winform 基于MYSQL数据库 简单使用动态TreeView
- C语言qsort多种用法
热门文章
- JavaScript 获取当前时间的前后几天、增加或减少指定天数
- 列表中的导航菜单的制作
- 七夕情人节表白HTML前端代码
- 蓝桥杯 BASIC-3 字母图形 c++实现
- MyBatis-Plus分页查询(快速上手运用)
- mysql修改视图定义_MySQL修改视图
- C++ 哈希表及unordered_set + unordered_map容器
- 21级数据结构考前模拟题
- 报错:pymysql.err.IntegrityError: (1062, “Duplicate entry ‘1‘ for key ‘mm.PRIMARY‘“)
- python绘制正六边形