-
2019-01-17 14:53:01
写了一个比较两个json对象是否相同的方法,大家瞅瞅看有没有啥问题
/** * 比较两个json对象的键和值是否都相同,如果有一个对象不是json对象,则返回false * json值的比较只支持 String JSON Number Boolean * @param {Object} obj1 [description] * @param {Object} obj2 [description] * @return {Boolean} [description] */ function compareJsonObj(obj1, obj2){ if(!isJsonObj(obj1) || !isJsonObj(obj2)) return false; var _keys = Object.keys(obj1); if(_keys.length != Object.keys(obj2).length) return false; for(var _key in obj1){ if(!obj2.hasOwnProperty(_key)) return false; var value1 = obj1[_key]; var value2 = obj2[_key]; if(isJsonObj(value1)) return compareJsonObj(value1, value2); //if(value1!==value2) return false;//这种比较方法,1和“1”不同 if(String(value1)!=String(value2)) return false; } return true; } //判断一个对象是否是json对象 function isJsonObj(data){ return typeof(data) == "object" && Object.prototype.toString.call(data).toLowerCase() == "[object object]" && !data.length; }
更多相关内容 -
JS中如何比较两个Json对象是否相等实例代码
2020-10-21 23:07:03主要介绍了JS中如何比较两个Json对象是否相等实例代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 -
接口自动化-判断两个json文件是否相等
2020-07-28 12:35:41写代码过程中判断两个文件是否相同,来给定测试结果,运用的是oprator.eq(a,res)。但是json文件内容过多,自己看起是相同,其实是由于自己粗心导致,这时候我们可以用以下代码来判断 #步骤1 for key in a.keys(): ...写代码过程中判断两个文件是否相同,来给定测试结果,运用的是oprator.eq(a,res)。但是json文件内容过多,自己看起是相同,其实是由于自己粗心导致,这时候我们可以用以下代码来判断
#方法1 for key in a.keys(): if a[key] != res[key]: print("key is %s, and a[key] is %s, res[key] is %s" % (key, a[key], res[key])) for key in res.keys(): if a[key] != res[key]: print("key is %s, and a[key] is %s, res[key] is %s" % (key, a[key], res[key]))``` #方法2 for key in res['users'][0].keys(): if a['users'][0][key] != res['users'][0][key]: print("key is %s, and a['users'][0][key] is %s, res['users'][0][key] is %s" % (key, a['users'][0][key], res['users'][0][key])) for key in a['users'][0].keys(): if a['users'][0][key] != res['users'][0][key]: print("key is %s, and a['users'][0][key] is %s, res['users'][0][key] is %s" % (key, a['users'][0][key], res['users'][0][key])) #方法3 for i in(0,len( res['users'])-1): for key in res['users'][i].keys(): if a['users'][i][key] != res['users'][i][key]: print("key is %s, and a['users'][i][key] is %s, res['users'][i][key] is %s" % ( key, a['users'][i][key], res['users'][i][key])) for key in a['users'][i].keys(): if a['users'][i][key] != res['users'][i][key]: print("key is %s, and a['users'][i][key] is %s, res['users'][i][key] is %s" % ( key, a['users'][i][key], res['users'][i][key]))
-
Python比较两个JSON文件内容是否相同
2021-11-08 16:12:28Python操作JSON文件题目分析比较方法1比较方法2测试文件 题目分析 操作JSON需要用到JSON包 把JSON文件转化为字典后进行比较 对比:普通比较“==”,现有的模块deepdiff 比较方法1 import json """ This snippet ...题目分析
- 操作JSON需要用到JSON包
- 把JSON文件转化为字典后进行比较
- 对比:普通比较“==”,现有的模块deepdiff
比较方法1
import json """ This snippet is used to compare two json files, and find out the differences. """ # read json file, return dict file def file_reader(file_path): with open(file_path, 'rb') as json_file: file_contents = json.load(json_file) return file_contents def dict_compare(d1, d2): d1_keys = set(d1.keys()) d2_keys = set(d2.keys()) shared_keys = d1_keys.intersection(d2_keys) added = d2_keys - d1_keys removed = d1_keys - d2_keys modified = {k: (d1[k], d2[k]) for k in shared_keys if d1[k] != d2[k]} same = set(k for k in shared_keys if d1[k] == d2[k]) return added, removed, modified, same if __name__ == "__main__": f1_path = './file1.json' f2_path = './file2.json' d1 = file_reader(f1_path) d2 = file_reader(f2_path) added, removed, modified, same = dict_compare(d1, d2) print('JSON文件比较结果如下:\n') print('增加项:%s\n' % added) print('删除项:%s\n' % removed) print('修改项:%s\n' % modified) print('相同项:%s\n' % same)
比较方法2
import json import deepdiff # pip install deepdiff """ This snippet is used to compare two json files, and find out the differences. """ # read json file, return dict file def file_reader(file_path): with open(file_path, 'rb') as json_file: file_contents = json.load(json_file) return file_contents if __name__ == "__main__": f1_path = './file1.json' f2_path = './file2.json' d1 = file_reader(f1_path) d2 = file_reader(f2_path) diff = deepdiff.DeepDiff(d1, d2) print('JSON文件比较结果如下:\n') print('增加项:%s\n' % diff['dictionary_item_added']) print('删除项:%s\n' % diff['dictionary_item_removed']) print('修改项:%s\n' % diff['values_changed'])
测试文件
file1.json
{ "a":{ "a1": "123", "a2": "456" }, "b":{ "b1": "135", "b2": "246" }, "d":{ "b1": "135", "b2": "246" } }
file2.json
{ "a":{ "a1": "123", "a2": "456" }, "c":{ "b1": "135", "b2": "246" }, "b":{ "b1": "1357", "b2": "246" } }
-
如何判断两个json是否完全相等
2021-02-23 22:32:531.简单方法:模糊对比:将两个json数据(JSON.stringify)转成字符串,进行对比。 2.精确方法:递归 第一步:先准备三个工具方法:用于判断是否是对象类型,是否是数组,获取对象长度 function isObj(object) { ...1.简单方法:模糊对比:将两个json数据(JSON.stringify)转成字符串,进行对比。
2.精确方法:递归
第一步:先准备三个工具方法:用于判断是否是对象类型,是否是数组,获取对象长度
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; }
第二步:准备两个相同或者不同的json对象
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
3.ES6:将嵌套结果扁平化的方法
//只有一层 const arr1 = [1, 2, 3, 4,[5],6,[7]]; const res=arr1.flatMap(x =>x) console.log(res); //打印:(7) [1, 2, 3, 4, 5, 6, 7] //两层时 const arr2 = [1, 2, 3, 4,[[5]],6,[[[7]]]]; const res=arr2.flatMap(x =>x) console.log(res); 打印:[1, 2, 3, 4, [5], 6, [7]]
-
js判断两个json对象是否相同的方法
2021-08-25 16:20:18//判断类型是否正确 if(getLength(objA) != getLength(objB)) return false; //判断长度是否一致 return CompareObj(objA, objB, true); //默认为true } function CompareObj(objA, objB, flag) { if(getLength... -
js代码-比较两个json数据是否相等
2021-07-14 21:18:26js代码-比较两个json数据是否相等 -
详解JS 比较两个Json对象的值是否相等的实例
2020-10-26 15:56:44主要介绍了JS 比较两个Json对象的值是否相等的实例,有需要的朋友可以参考一下 -
Java-判断两个json字符串是否相等(忽略子元素顺序)
2019-07-29 19:32:55示例:比较以下两个json字符串 json字符串1: { "value1": "11", "value2": "22", "value3": { "before": 1, "after": 2 } } json字符串2: { "value3": { "after": 2, "before": 1 }, ... -
比较任意两个JSON串是否相等(比较对象是否相等)JAVA版
2021-03-09 01:35:49在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是Map、List互相嵌套成的复杂数据结构。比较对象是否相等,常见的思路是重写equals方法,但鉴于对象的... -
js 判断两个json是否一样
2019-03-11 19:56:00//常用的对象对比 this.isEqual = function () { var arg = getArg(arguments); var o1 = arg["object"][0] || []; var o2 = a... -
JQ 判断json对象是否相等
2022-03-31 15:06:02/*判断json对象是否一样*/ //判断类型 function isObj(object) { return (object && typeof (object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]... -
【Java】+【JSON】+对比两个json对象是否完全一样
2021-03-09 01:35:02一、需求需要对比这2个json字符串是否完全一样(不用管顺序)1 String dui = "{\"adGroupVO\":{\"campaignId\":\"CAMPAIGN201912101000004559\",\"adGroupChannel\":{\"channelType\":\"SMS\",\"resourceCode\":\... -
Java对比两个json 的数据结构和内容是否一样
2022-04-26 00:25:36java 如何对比两个Json 的数据结构和内容是否一样,和顺序无关。 上码 private Boolean compareJson(String sourceJsonStr,String targetJsonStr){ return JSONObject.parse(sourceJsonStr).equals(JSONObject.... -
shell怎么判断两个文件内容是否相同
2021-05-10 08:19:23C# 通过比对哈希码判断两个文件内容是否相同 1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ... ... -
JS判断两个数组或对象是否相同的方法示例
2020-12-08 16:39:37本文实例讲述了JS判断两个数组或对象是否相同的方法。分享给大家供大家参考,具体如下: JS 判断两个数组是否相同 要判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。 JSON.stringify([1,2,... -
python对两个json文件排序并判断两个json文件是否相等
2018-08-08 16:34:40import json import jsonpatch import sys def cmp(src_data, dst_data): if isinstance(src_data, dict): """若为dict格式""" for key in dst_data: if key no... -
python3 比较两个json文件内容是否一致
2021-05-19 15:35:29python3 比较两个json文件内容是否一致 输出True False import hashlib def getHash(f): line=f.readline() hash=hashlib.md5() while(line): hash.update(line) line=f.readline() return hash.hexdigest() ... -
java比较两个json字符串是否相等,如果有集合(List,Map)忽略顺序
2021-09-23 19:11:03花了一下午时间,发现网上有很多,但是多多少少有些问题,于是自己改进了一下,代码如下: ... import java.util.ArrayList; import java.util.Comparator; import java.util.List;... private static final Gson gson ... -
比较两个JSON数组是否相同并返回不同的JSON对象
2018-11-05 14:44:48比较两个Json数组是否相同 比较两个数组,尤其是比较两个Jsonarray数组的不同,相关的解决方案真的很少,在我要写这个博客之前一直没有找到一个好的解决方法,直到发现 HashSet 这个类型的数组特性,在解决问题... -
如何比较两个json字符串是否相等
2019-04-24 09:47:501、引入相关依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6.2</version>...2、比较两个顺序... -
校验2个json文件内容是否一致/ 比较2个文件是否同一致
2019-04-24 17:39:071.python判断两个文件是否相同 (用md5 和hash来确认) import hashlib def getHash(f): line=f.readline() hash=hashlib.md5() while(line): hash.update(line) line=f.readline() return hash.he... -
JS中判断JSON数据是否存在某字段的方法
2020-12-10 16:12:48如何判断传过来的JSON数据中,某个字段是否存在, 1.obj[“key”] != undefined 这种有缺陷,如果这个key定义了,并且就是很2的赋值为undefined,那么这句就会出问题了。 2.!(“key” in obj) 3.obj.... -
vue - 比较两个Json对象是否相等
2020-12-22 09:36:02// 内容是否有修改// true:未改变;false:改变了isChange() {if(this.Compare(this.dialog.detail.form, this.dialog.detail.oldForm)){console.log('未改变');}else{console.log('改变');}return this.Compare(this... -
Python比较2个json数据是否相等
2021-02-19 16:30:212、将两个字典按key排好序,然后使用zip()函数将两个字典对应的key打包成元组。比较对应的key的value是否相等。 for src_list, dst_list in zip(sorted(dict1), sorted(dict2)): if str(dict1[src_list]) != str... -
使用Gson判断两个Json字符串是否相等
2020-05-17 22:26:58//将json字符串转成json对象 String str1 = "{\"id\":1,\"description\":\"航司专区 航司专区首页改服务推荐\",\"requestMethod\":\"process\",\"paramsMap\":{\"requestType\":\"post\",\"submit\":\"字节流\",\... -
判断两个json是不是相等的
2018-11-05 19:10:06JavaScript判断两个json是不是相同的 原理 暴力的递归遍历对比,遇到不相等就return false code: let jsonObjA = { "Name": "MyName", "Company": "MyCompany", &...
收藏数
130,337
精华内容
52,134