比较json

1 fastjson

oRecAbc, aRecAbc  应为 jsonObject

数组顺序不一致会认定为不相同,"1"  和  1  会认为相等

如有错误欢迎指正

private static boolean diffJson(Object oRecAbc, Object aRecAbc) {
        if (oRecAbc == null && aRecAbc == null){
            return true;
        }
        if (oRecAbc == null || aRecAbc == null){
            return false;
        }

        // 判断
        if (oRecAbc instanceof Number || oRecAbc instanceof String || oRecAbc instanceof Boolean){
            return StrUtil.equals(oRecAbc.toString(),aRecAbc.toString());
        }else if (oRecAbc instanceof JSONArray){
            if (!(aRecAbc instanceof JSONArray)){
                return false;
            }
            JSONArray oRecAbcJsonArray = (JSONArray) oRecAbc;
            JSONArray aRecAbcJsonArray = (JSONArray) aRecAbc;
            if (oRecAbcJsonArray.size() != aRecAbcJsonArray.size()){
                return false;
            }
            for (int i = 0; i < oRecAbcJsonArray.size(); i++) {
                if (!diffJson(oRecAbcJsonArray.get(i),aRecAbcJsonArray.get(i))) {
                    return false;
                }
            }
            return true;
        }else if (oRecAbc instanceof JSONObject){
            if (!(aRecAbc instanceof JSONObject)){
                return false;
            }
            JSONObject oRecAbcJsonObject = (JSONObject) oRecAbc;
            JSONObject aRecAbcJsonObject = (JSONObject) aRecAbc;
            if (oRecAbcJsonObject.size() != aRecAbcJsonObject.size()){
                return false;
            }
            for (Map.Entry<String, Object> stringObjectEntry : oRecAbcJsonObject.entrySet()) {
                String key = stringObjectEntry.getKey();
                Object value = stringObjectEntry.getValue();
                Object value1 = aRecAbcJsonObject.get(key);
                if (value == value1){
                    continue;
                }
                if (value1 == null || value == null){
                    return false;
                }
                boolean b = diffJson(value, value1);
                if (!b) {
                    return false;
                }
            }
            return true;
        }else {
            return oRecAbc.equals(aRecAbc);
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值