function sortJSON(data, key, way) {

                //log.info(" " + key + " ------------------- " + typeof(key));
return data.sort(function(a, b) {
var x = a[key]; var y = b[key];
if (way === '' ) { return ((x < y) ? - : ((x > y) ? : )); }
if (way === '') { return ((x > y) ? - : ((x < y) ? : )); }
}); } function isArray(what) {
return Object.prototype.toString.call(what) === '[object Array]';
} var deepequals = function ( x, y ) {
if ( x === y ) return true;
// if both x and y are null or undefined and exactly the same if ( ! ( x instanceof Object ) || ! ( y instanceof Object ) ) return false;
// if they are not strictly equal, they both need to be Objects if ( x.constructor !== y.constructor ) return false;
// they must have the exact same prototype chain, the closest we can do is
// test there constructor.
// log.info("1111111111111111111111 "+ typeof("payMethod") + "" + Object.keys(x)[0] + "" + typeof(Object.keys(x)[0])); var sortkey2 = "payMethod"; if(isArray(x) && x.length > && typeof x[] == 'object' && Object.keys(x[])[] === "payMethod" ) { //log.info(JSON.stringify(x)+" ======== "+ Object.keys(x));
//log.info(JSON.stringify(y)+" ======== "+ Object.keys(y));
sortkey2 = Object.keys(x[])[]; if(isArray(x)) { sortJSON(x,sortkey2, '');}
if(isArray(y)) { sortJSON(y,sortkey2, ''); } //log.info(JSON.stringify(x)+" ======== "+ Object.keys(x));
//log.info(JSON.stringify(y)+" ======== "+ Object.keys(y)); } //if(sortkey2 == sortkey) log.info("same string " + sortkey); // if(isArray(x)) sortJSON(x,'a', '123');
// if(isArray(y)) sortJSON(y,'a', '123'); for ( var p in x ) { // log.info(p+":"+ JSON.stringify(x[p]) + " ====== " + JSON.stringify(y[p])); if ( ! x.hasOwnProperty( p ) ) continue;
// other properties were tested using x.constructor === y.constructor if ( ! y.hasOwnProperty( p ) ) { log.info(JSON.stringify(x)+"\n================属性不一致 ===============\n"+JSON.stringify(y)); return false; }
// allows to compare x[ p ] and y[ p ] when set to undefined if ( x[ p ] === y[ p ] ) continue;
// if they have the same strict value or identity then they are equal if ( typeof( x[ p ] ) !== "object" ) { log.info(JSON.stringify(x)+"\n================值不一致===============\n"+JSON.stringify(y)); return false; };
// Numbers, Strings, Functions, Booleans must be strictly equal if ( ! deepequals( x[ p ], y[ p ] ) ) return false; // Objects and Arrays must be tested recursively
} for ( p in y ) {
if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) { log.info(JSON.stringify(x)+"\n================反向检查属性不一致===============\n"+JSON.stringify(y)); return false; };
// allows x[ p ] to be set to undefined
}
return true;
} //Object.prototype.deepEquals = deepEquals; var beforeObject = JSON.parse(vars.get("83response")); var afterObject = JSON.parse(prev.getResponseDataAsString()); if(deepequals( beforeObject, afterObject )){ log.info("deep equals"); }
else{
// log.info(deepequals(testa,testb));
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage("content not deep equal ");
AssertionResult.setResultForFailure("content not deep equal");
}

10.jmeter jsr223 javascript 深度比对json object的更多相关文章

  1. javascript深度克隆与javascript的继承实现

    1.javascript深度克隆: //注意这里的对象包括object和array function cloneObject(obj){ var o = obj.constructor === Arr ...

  2. JavaScript(8)——JSON

    JSON 啊呀呀,终于写到了JSON了.莫名的开心,虽然还是被说进度慢,不过,我不管,我就是开心.恩,好好学习,好好加油.(这是一段毫无逻辑的话,我也不知道说啥了) JSON是JavaScript的一 ...

  3. Javascript学习之:JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于ECMAScript的一个子集,采用完全独立于语言的文本格式.这些特性使JSON成为理想的数据交换 ...

  4. JavaScript:基础扩展(1)——JSON

    JavaScript:扩展知识(1)——JSON 理解: 关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言.虽然具有相同的语法形式,但 JSON 并不从属于 JavaScript.而 ...

  5. 为新项目添彩的 10+ 超有用 JavaScript 库

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  6. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  7. JavaScript标准库之——JSON

    JSON 对象包含了两个方法,一是解析 JavaScript Object Notation (JSON),二是将值转换为 JSON.这个对象本身不能被调用或者作为构造函数,除了它的这两个方法属性外 ...

  8. JavaScript Patterns 3.5 JSON

    JSON: JavaScript Object Notation {"name": "value", "some": [1, 2, 3]}  ...

  9. JavaScript的Eval与JSON.parse的区别

    JavaScript的Eval与JSON.parse的区别 json的定义以及用法: JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格 ...

随机推荐

  1. ssh_exchange_identification: read: Connection reset by peer解决办法

    使用本地终端连接centos服务器,提示ssh_exchange_identification: read: Connection reset by peer $ssh root@10.xxx.xxx ...

  2. Leetcode Lect4 二叉树中的分治法与遍历法

    在这一章节的学习中,我们将要学习一个数据结构——二叉树(Binary Tree),和基于二叉树上的搜索算法. 在二叉树的搜索中,我们主要使用了分治法(Divide Conquer)来解决大部分的问题. ...

  3. IIS是怎么处理多个请求的?

      一,假设有一台服务器,它的IIS上部署有一个Web应用程序-S,可以通过浏览器或其他方式进行访问.     假设有A.B.C三台电脑同时访问网站S,IIS接收到3个HTTP请求,然后分别为三个请求 ...

  4. 刚新建好的动态网站项目,创建jsp页面就报错??

    拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...

  5. 团队中的 Git 实践

    转载自:https://segmentfault.com/a/1190000004963641 本文首发于欧雷流.由于我会时不时对文章进行补充.修正和润色,为了保证所看到的是最新版本,请阅读原文. 在 ...

  6. Linux性能优化从入门到实战:05 CPU篇:硬中断、软中断

      软中断(softirq)会导致CPU 使用率升高   中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求.中断其实是一种异步的事件 ...

  7. 10java进阶——IO2

    1. Properties类 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 特点: Hashtable的子 ...

  8. touch 创建空文件或改变文件的时间戳属性

    1.命令功能 touch 改变文件时间属性或创建空文件. 2.语法格式 touch  [option]  file touch 选项 文件名 3. 选项参数说明 参数 参数说明 -a 仅改变文件的访问 ...

  9. Spring Aop 动态代理失效分析

    1. Spring Aop 原理 Spring Aop 通过动态代理创建代理对象,在调用代理对象方法前后做增强. 2. Transactional, Async 注解失效? 当在动态代理方法中调用当前 ...

  10. man LVCREATE

    LVCREATE(8)                                                        LVCREATE(8) NAME/名称       lvcreat ...