我们在做jmeter接口测试的时候,有时候碰到开发没返回数据total,只返回了一条条记录,可是呢,我们又需要知道到底返回了多少条数据时,咋办呢?咋办呢?咋办呢?

不要急,接下来,让我们见证奇迹是如何诞生的!!!

  可能有人在网上看到很多关于解析json返回数据的文章,看来看去都是一样的,于是乎,我亲测了一下,果然没用!!!(可能是本人技术太渣,无法领悟其中的真髓)没办法,只能看log信息一次次试咯!终于在各种大佬的帮助下搞好了!

第一步:将fastjson-1.2.62.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in namespace的错误(保险起见,再将fastjson-1.2.62.jar包同样置于jmeter的lib/ext目录下,同样将该jar包添加到测试计划的Library中)

  

我们再来看看要解析的数据格式

我们要获取到item数组长度,即item下有多少条数据。

第二步:我们要获取到这些数据,来一个接口请求,获取一下数据,然后在接口请求下加一个后置处理器BeanShell PostProcessor。话不多说,代码撸起来!(接口你们自己搞一个,我就不贴了)

import com.alibaba.fastjson.*;

//获取请求的返回值
String response_data = prev.getResponseDataAsString();
//日志打印获取请求的返回值
log.info("==============response_data=="+response_data+"=========================");
//将String类型的返回值构造成JSONObject对象
JSONObject data_obj = JSON.parse(response_data);
//日志打印data_obj值
log.info("==============data_obj=="+data_obj+"=========================");

//将data转成JSONObject类型
JSONObject jsonData = data_obj.getJSONObject("data");

//日志打印jsonData值
log.info("==============jsonData=="+jsonData+"=========================");

//获取作为下一个请求post的参数值item(获取字符串)
//String item = jsonData.get("item").toString();

//获取作为下一个请求post的参数值item(获取JSONArray)
JSONArray item = jsonData.getJSONArray("item");

log.info("==============item=="+item+"=========================");

//获取item字符串的长度
//int len = item.length();

//获取item数组的长度
int len = item.size();

String itemLen = Integer.toString(len);

log.info("==============itemLen=="+itemLen+"=========================");
vars.put("itemNum",itemLen);

把上面的代码就这样塞到BeanShell PostProcessor进去。各位观众,看到没有,我几乎是每一行一个Log,我太难了。

第三步:执行一下,运气好的话就会看到jmeter日志里打印出以下的日志信息了

顺便说一下,代码里最后一行vars.put("itemNum",itemLen);这个是塞一个itemNum变量到jmeter里,方便后面去调用。这样一来,就获取到我们想要的数据了。

划重点:BeanShell PostProcessor为啥有标红的呢?因为网上很多的全是这样写的:JSONObject data_obj = new JSONObject(response_data); 结果我也这样试了,理所当然我失败了,报错了,Can't find constructor: com.alibaba.fastjson.JSONObject( java.lang.String ) in class:,然后我去翻json源码,一看就两构造器:public JSONObject()和public JSONObject(boolean isNull),压根儿就没有public JSONObject(String text)这样的构造函数,不报错才怪勒!换个方法转化JSONObject对象,找到了JSON.parse(String text); 这样完美解决。

  

Jmeter4.0 _Beanshell解析并获取json响应数据数组长度的更多相关文章

  1. Jmeter(三十四)_Beanshell解析并提取json响应

    1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中:否则会报:Typed variable declaration ...

  2. Jmeter_Beanshell解析并提取json响应

    1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中:否则会报:Typed variable declaration ...

  3. SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据

    1 什么是SpringMVC 是一个mvc框架,用来简化基于mvc架构的web应用程序的 开发. 2 SpringMVC五大组件 DispatcherServlet (前端控制器) HanlderMa ...

  4. Jmeter-BeanShell断言的运用一(JSON响应数据与数据库比对)

    前言 最近在学习BeanShell断言,发现有点强大哈,只要会写代码,就没有什么是断言不了的,哈哈哈,不过我现在只会写点蹩脚的代码,下面将介绍下如何将返回的JSON数据与数据库数据做对比. 注:本次涉 ...

  5. Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据

    Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...

  6. mitmproxy 获取请求响应数据

    比较好的一个介绍是:https://blog.wolfogre.com/posts/usage-of-mitmproxy/ mitproxy 获取请求响应数据的代码如下: # -*- coding: ...

  7. jQuery获取JSON格式数据方法

    getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...

  8. Java学习-055-Jsoup爬虫通过设置获取响应数据大小的最大值,解决因默认获取 1MB 响应数据导致的无法获取全部的响应数据内容问题

    在日常工作中,通常会遇到获取各种网络数据使用的情况,Java中可使用Jsoup(Python中可使用 BeatifulSoup)进行数据的获取及处理. 今天有朋友问,在使用 Jsoup 进行请求数据时 ...

  9. 通过Jquery中Ajax获取json文件数据

    1. JSON(JavaScript Object Notation): javaScript对象表示法: 是存储和交换文本信息的语法,比xml更小,更快,更易解析. 2. JSON基本书写格式 : ...

随机推荐

  1. babelrc笔记

    Babel默认只是转换新的语法(简单转换语法糖),如箭头函数等,但不会转换新的API,如Iterator.Generator.Set.Maps.Proxy.Reflect.Symbol.Promise ...

  2. express下使用ES6

    //环境切换配置 package.json scripts:{ "service": "NODE_ENV=production PORT=3000 npm start&q ...

  3. [LeetCode] 282. Expression Add Operators 表达式增加操作符

    Given a string that contains only digits 0-9 and a target value, return all possibilities to add bin ...

  4. Kubernetes 集群日志管理 Elasticsearch + fluentd(二十)

    目录 一.安装部署 Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elas ...

  5. mysql执行计划详解,

    一.语法 explain SQL语句 例如: explain ; 二.explain输出解释 +----+-------------+-------+-------+----------------- ...

  6. [转] Win10插入U盘后双击无法打开,无法访问,显示设备未就绪;驱动哥帮你解决

    说起U盘,相信大家都不陌生. 这个不起眼的小东西在我们日常生活息息相关,一旦损坏可能就会造成一些不必要的麻烦. 最近驱动哥就收到了一大批用户关于U盘问题的相关咨询,一起来看看到底是什么情况吧! 据其中 ...

  7. SpringBoot 的拦截器

    首先注册我们要有完整的一个可以开始的开发环境 先自己创建一个配置类 InterceptorConfig, 实现springboot自带的拦截器接口 WebMvcConfigurer. package ...

  8. Linux学习-文件基础权限

    文件基本权限 drwxr-xr-x 第一个字符表示文件类型 d:表示是一个目录.-:表示这是一个普通的文件.l: 表示这是一个符号链接文件,实际上它指向另一个文件.b.c:分别表示区块设备和其他的外围 ...

  9. 面试官问你MySQL的优化,看这篇文章就够了

    作者:zhangqh segmentfault.com/a/1190000012155267 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例 ...

  10. 用Python写一个滑动验证码

    1.准备阶段 滑动验证码我们可以直接用GEETEST的滑动验证码. 打开网址:https://www.geetest.com/ ,找到技术文档中的行为验证,打开部署文档,点击Python,下载ZIP包 ...