我们在做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. net::ERR_ABORTED 404 (Not Found)

    对于按需加载(on-demand-load)或加载外部资源(external resources)(如图片.文件等)来说,webpack的配置,output.publicPath是很重要的选项.如果指 ...

  2. [简短问答]LODOP套打问题及相关

    该博文为简短问答,具体详细介绍可查看本博客的相关博文,套打及位置相关详细博文:LODOP中的各种宽高和位置简短问答.LODOP不同打印机出现偏移问题.Lodop打印控件打印机可打区域的影响 设置纸张边 ...

  3. [LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  4. [LeetCode] 548. Split Array with Equal Sum 分割数组成和相同的子数组

    Given an array with n integers, you need to find if there are triplets (i, j, k) which satisfies fol ...

  5. Jenkins - 安装并启动Jenkins

    1 - 关于Jenkins 构建流水线(build pipeline)工具Jenkins可以轻松地定义和管理各种各样的操作(构建.测试等),并将这些操作像管道pipe一样自由地进行组合,从而自动.流畅 ...

  6. TortoiseGit,git 未能顺利结束 (退出码 1)

    其中一个原因是不能把Git下所有文件全部删除,一个都没有,就会报这个错误. 注:空文件夹git定义为空,不是文件.所以只有空文件夹也会报这个错误.

  7. SLA 99.99%以上!饿了么实时计算平台3年演进历程

    作者介绍 倪增光,饿了么BDI-大数据平台研发高级技术经理,曾先后就职于PPTV.唯品会.15年加入饿了么,组建数据架构team,整体负责离线平台.实时平台.平台工具的开发和运维,先后经历了唯品会.饿 ...

  8. 生信-使用NCBI进行目的基因的引物设计

    使用NCBI进行目的基因的引物设计 全文概述 利用生信工具进行目的基因的引物设计,使用了NCBI进行筛选与设计引物,使用 idtdna对筛选出的DNA进行检查.本文分享了如何筛选出高质量的基因引物,帮 ...

  9. [转帖]首颗国产DRAM芯片的技术与专利,合肥长鑫存储的全面深度剖析

    首颗国产DRAM芯片的技术与专利,合肥长鑫存储的全面深度剖析 https://mp.weixin.qq.com/s/g_gnr804q8ix4b9d81CZ1Q 2019.11 存储芯片已经成为全球珍 ...

  10. 1.jvm思维导图

    点击图片可查看高清图