精华内容
下载资源
问答
  • 判断两个json对象是否相同
    千次阅读
    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对象是否相等实例代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 写代码过程中判断两个文件是否相同,来给定测试结果,运用的是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文件题目分析比较方法1比较方法2测试文件 题目分析 操作JSON需要用到JSON包 把JSON文件转化为字典后进行比较 对比:普通比较“==”,现有的模块deepdiff 比较方法1 import json """ This snippet ...

    题目分析

    1. 操作JSON需要用到JSON包
    2. 把JSON文件转化为字典后进行比较
    3. 对比:普通比较“==”,现有的模块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:53
    1.简单方法:模糊对比:将两个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]]

     

    展开全文
  • //判断类型是否正确 if(getLength(objA) != getLength(objB)) return false; //判断长度是否一致 return CompareObj(objA, objB, true); //默认为true } function CompareObj(objA, objB, flag) { if(getLength...
  • js代码-比较两个json数据是否相等
  • 主要介绍了JS 比较两个Json对象的值是否相等的实例,有需要的朋友可以参考一下
  • 示例:比较以下两个json字符串 json字符串1: { "value1": "11", "value2": "22", "value3": { "before": 1, "after": 2 } } json字符串2: { "value3": { "after": 2, "before": 1 }, ...
  • 在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是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]...
  • 一、需求需要对比这2个json字符串是否完全一样(不用管顺序)1 String dui = "{\"adGroupVO\":{\"campaignId\":\"CAMPAIGN201912101000004559\",\"adGroupChannel\":{\"channelType\":\"SMS\",\"resourceCode\":\...
  • java 如何对比两个Json 的数据结构和内容是否一样,和顺序无关。 上码 private Boolean compareJson(String sourceJsonStr,String targetJsonStr){ return JSONObject.parse(sourceJsonStr).equals(JSONObject....
  • shell怎么判断两个文件内容是否相同

    千次阅读 2021-05-10 08:19:23
    C# 通过比对哈希码判断两个文件内容是否相同 1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ... ...
  • 本文实例讲述了JS判断两个数组或对象是否相同的方法。分享给大家供大家参考,具体如下: JS 判断两个数组是否相同 要判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。 JSON.stringify([1,2,...
  • import 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文件内容是否一致 输出True False import hashlib def getHash(f): line=f.readline() hash=hashlib.md5() while(line): hash.update(line) line=f.readline() return hash.hexdigest() ...
  • 花了一下午时间,发现网上有很多,但是多多少少有些问题,于是自己改进了一下,代码如下: ... import java.util.ArrayList; import java.util.Comparator; import java.util.List;... private static final Gson gson ...
  • 比较两个Json数组是否相同  比较两个数组,尤其是比较两个Jsonarray数组的不同,相关的解决方案真的很少,在我要写这个博客之前一直没有找到一个好的解决方法,直到发现 HashSet 这个类型的数组特性,在解决问题...
  • 如何比较两个json字符串是否相等

    千次阅读 2019-04-24 09:47:50
    1、引入相关依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6.2</version>...2、比较两个顺序...
  • 1.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...
  • 如何判断传过来的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:21
    2、将两个字典按key排好序,然后使用zip()函数将两个字典对应的key打包成元组。比较对应的key的value是否相等。 for src_list, dst_list in zip(sorted(dict1), sorted(dict2)): if str(dict1[src_list]) != str...
  • //将json字符串转成json对象 String str1 = "{\"id\":1,\"description\":\"航司专区 航司专区首页改服务推荐\",\"requestMethod\":\"process\",\"paramsMap\":{\"requestType\":\"post\",\"submit\":\"字节流\",\...
  • 判断两个json是不是相等的

    千次阅读 2018-11-05 19:10:06
    JavaScript判断两个json是不是相同的 原理 暴力的递归遍历对比,遇到不相等就return false code: let jsonObjA = { "Name": "MyName", "Company": "MyCompany", &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,337
精华内容 52,134
关键字:

判断两个json内容是否相同