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);
}
}