在做api迁移的时候,需要比较老api和新api的返回结果是否一致,之前一直用到的是将json字符串转成Map然后对比

ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> oldJsonMap = objectMapper.readValue( oldResponse, Map.class );
Map<String, String> newJsonMap = objectMapper.readValue( newResponse, Map.class );
if ( oldJsonMap.equals( newJsonMap ) )
{log.info( name + " match test successful" );
}

这种做法可以对比大部分情况的返回结果,而且不分json字段顺序,但是对于一些返回内容特别长的json字符串对比就会对比有问题(返回结果是一致的,但是oldJsonMap.equals( newJsonMap )总是返回false,暂时没有搞清楚原因)。

后来google了下其他解决方案,找到了一种个人认为比较好的方法:使用org.skyscreamer包下的JSONAssert.assertEquals()方法。

JSONAssert.assertEquals( oldResponse, newResponse, false );

gradle添加依赖包:compile "org.skyscreamer:jsonassert:1.5.0"

对比两个Json对象是否一致相关推荐

  1. es6如何修改json数组里的某个值_如何通过id使用纯Javascript(ES6)合并两个json对象值...

    我有两个Javascript对象数组,并且想要将具有相同"ObjID"的两个Javascript对象的属性合并为一个Javascript对象.如何通过id使用纯Javascript ...

  2. js合并两个json对象

    js把两个对象合并成一个对象 文章目录 js把两个对象合并成一个对象 前言 一.使用Object.assign()解决该问题 1.方法介绍 2.语法 二.示例 1.复制对象 2.合并对象 3.合并具有 ...

  3. js比较两个JSON对象,返回变化值

    废话不多说,直接上干货. let utils = {/*** 比较两个json(新json与老json)的不同,并返回 不同时的旧值(old_val)和新值(new_val)* @param {*} ...

  4. php+多个json数组,php - 两个如何比较PHP中的两个JSON对象数组? - SO中文参考 - www.soinside.com...

    我有JSON对象数组,如下所示.以下JSON对象数组位于文件((feeds / ptp-ess_landing_house.json)中{ "joint_committees": ...

  5. 对比两个自定义对象是否相等

    重写equals()方法的步骤一般如下: 1.先用"=="判断是否相等. 2.判断equals()方法的参数是否为null,如果为null,则返回false:因为当前对象不可能为n ...

  6. vue对比两段json文本修改,修改的项添加红色高亮显示

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 需求 一.实现思路 二.实现步骤 1.数据格式 2.代码部分 3.html渲染部分代码 4.完成结果 总结 需求 用户需求是 ...

  7. 【一语点醒梦中人】如何优雅地合并两个JSON对象 → Object.assign(a, b)和Object.assign({}, a, b)的区别

    var a = {a: 1}; var b = {b: 2}; var c = Object.assign(a, b);/* a对象也会改变,b不变,返回被被修改对象 */ var d = Objec ...

  8. 【JQuery】使用JQuery 合并两个 json 对象

    一,保存object1和2合并后产生新对象,若2中有与1相同的key,默认2将会覆盖1的值 1 var object = $.extend({}, object1, object2); 二,将2的值合 ...

  9. vue 判断两对象是否一致_vue - 比较两个Json对象是否相等

    // 内容是否有修改 // true:未改变:false:改变了 isChange() { if(this.Compare(this.dialog.detail.form, this.dialog.d ...

最新文章

  1. 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale
  2. 百度工程师亲授CCF BDCI解题思路,15万大奖等你来拿
  3. kali-linux下搭建DVWA环境
  4. 基于密度的异常值检测方法整理
  5. 浦发银行出现:部件'InstallCertListAx.ocx'或其附件之一不能正确注册:一个文件丢失 解决...
  6. 提升漏洞修复率,DevSecOps真的很有一套
  7. 关于html语义化 以下哪个说法是正确呢,前端面试题2019年网易工程师面试题及答案解析...
  8. Qt setFocus
  9. Python编程入门教程
  10. 前端面试题(JavaScript基础篇)
  11. png转bmp,png批量转成bmp
  12. Automated Installations of Multiple RHEL/CentOS 7 Distributions using PXE Server and Kickstart Files
  13. ESP32设备驱动-MicroSD Card驱动
  14. 粉丝福利!Matlab自动配色神器ColorForFans
  15. 写个脚本批量注册网站账号
  16. 【读书笔记->推荐系统】02-03 逻辑回归
  17. Linux - 系统文件目录说明
  18. [Linux]在Linux上部署Java开发环境笔记(一)-- 补充:Linux下如何手动设置IP及配置DNS服务
  19. spss下载过程中无法解压的问题
  20. c语言mn间有多少素数,素数表达式p=2a+1 (a ≠ 2mn+m+n)由此出发看哥猜、挛猜比较清晰...

热门文章

  1. 土木工程类规范下载(持续更新中...)
  2. 真正通俗易懂让你搞懂Javascript 执行机制
  3. 0710学习总结(友元函数,string函数,引用)
  4. js函数内返回一个内部函数详解
  5. 页面跳转传参,A 页面跳转到B页面,把A页面获取的值传到B页面
  6. 【2016读书】3月读书笔记
  7. phpMyAdmin 3.4.3正式版拨开云雾见青天
  8. python编写一个程序、用户输入长方形的长和宽_Python:编写一个程序,要求用户提供颜色、线宽、行长和形状...
  9. iOS view生命周期
  10. CyberPanel – 完全基于OpenLiteSpeed的虚拟主机控制面板