转:Jmeter对Json格式数据的三种处理方式

摘要:
在采样器上添加后置处理器--˃jp@gc-JSONPathExtractor在DebugSampler的结果中,我们可以看到prizeNameJson的价值是4元。3) 使用JMeter的BeanShell PostProcessor处理Json数据,将fastjson.jar复制到jmeterlib文件夹,然后重新启动JMeter,在Sampler上添加一个后处理器--˃BeanShell PostProcesser 1importcom.alibaba.fastjson.Json;2importcom.alibaba.fastjson.JSONArray;3importcom.alibaba.fastjson.JSONObject;45Stringjson=prev.getResponseDataAsString();6JSONObjectjso=JSON.parseObject;7JSONObjectdata=jso.getJSONObject;8JSONArray列表=data.getJSONArray;910vars.put;在DebugSampler的结果中,您可以看到prizeNameValue的价值为4元。总之,本文列出了从Json格式的返回值中提取数据的三种可用方法。正则表达式对于处理简单的Json格式数据非常快速和标准化。JsonPath插件可以创建可维护的脚本。根据Java语言的灵活性,可以进一步开发引入fastjson库的BeanShell。
 1 {
 2 :   "code":"000000",
 3 :   "data":
 4 :   {
 5 :   :   "pageCount":"1",
 6 :   :   "prizeLists":
 7 :   :   [
 8 :   :   :   {
 9 :   :   :   :   "cellphoneNum":"134****0001",
10 :   :   :   :   "prizeId":"1000005",
11 :   :   :   :   "prizeName":"10元话费"
12 :   :   :   },
13 :   :   :   {
14 :   :   :   :   "cellphoneNum":"134****0001",
15 :   :   :   :   "prizeId":"1000007",
16 :   :   :   :   "prizeName":"4元话费"
17 :   :   :   }
18 :   :   ],
19 :   :   "totalCount":"2"
20 :   },
21 :   "msg":"成功"
22 }
1)使用正则表达式提取prizeName的第二个值
在Sampler上面添加后置处理器-->正则表达式提取器
转:Jmeter对Json格式数据的三种处理方式第1张
引用名称:其他地方引用提取值的变量名称,这里填写的是:prizeNameValue,具体的引用方式是${prizeNameValue}。
正则表达式:提取内容的正则表达式【()表示提取,对于你要提前的内容需要用小括号括起来】。
模板:用$$引用起来,如果在正则表达式中有多个提取表达式(多个括号括起来的部分),则可以是$1$,$2$(表示匹配第一个括号的内容还是第二个括号的内容)等等,表示解析到的第几个值给prizeNameValue,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式。
匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中第几个匹配的内容。这里需要提取的是第二个匹配的值。
缺省值:正则匹配失败时取的值。
可以在jmeter中添加Sampler -->Debug Sampler来看正则表达式的取值。
转:Jmeter对Json格式数据的三种处理方式第2张
2)使用 JMeter 的插件JSONPath 来获取 JSON 数据中特定位置的数据
在jmeter的plugins网站http://jmeter-plugins.org/downloads/all/ 选择 JMeterPlugins-ExtrasLibs-X.X.X.zip下载,解压以后将lib和lib/ext中的jar包放到jmeter安装目录对应位置,然后重启jmeter。
在Sampler上面添加后置处理器-->jp@gc - JSON Path Extractor,
转:Jmeter对Json格式数据的三种处理方式第3张
在DebugSampler的结果中可以看到prizeNameJson的取值是4元话费。
转:Jmeter对Json格式数据的三种处理方式第4张
3)使用JMeter的BeanShell Post Processor来处理Json数据
将fastjson.jar 拷贝到 jmeter lib 文件夹下后重启 jmeter
在Sampler上面添加后置处理器-->BeanShell PostProcessor
转:Jmeter对Json格式数据的三种处理方式第5张
 1 import com.alibaba.fastjson.JSON;
 2 import com.alibaba.fastjson.JSONArray;
 3 import com.alibaba.fastjson.JSONObject;
 4 
 5 String json=prev.getResponseDataAsString();
 6 JSONObject jso = JSON.parseObject(json);
 7 JSONObject data = jso.getJSONObject("data");
 8 JSONArray prizeLists = data.getJSONArray("prizeLists");
 9 
10 vars.put("prizeNameValue",prizeLists.getJSONObject(1).getString("prizeName"));
在DebugSampler的结果中可以看到prizeNameValue的取值是4元话费。
转:Jmeter对Json格式数据的三种处理方式第6张
总结
  本文列举出了三种可用的从 Json 格式的返回值中提取数据的方法。正则表达式对于简单的 Json 格式数据的处理非常快速标准化,JsonPath 插件可以创建能够被维护的脚本,引入fastjson库的BeanShell 依赖于 Java 语言的灵活性可以进行进一步的开发。大家可以根据自己的习惯和喜好选择任意一种进行数据的提取。

免责声明:文章转载自《转:Jmeter对Json格式数据的三种处理方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇批量修改指定目录下的文件名和文件内容反弹shell的各种姿势下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JMeter 使用 http长连接的方法

前言 如果需要在JMeter通过http长连接发送请求,首先需要选择了Use KeepAlive 长连接协议,虽然默认是勾选的,但也需要确认一下。 除了选择了Use KeepAlive 长连接协议,还需要在Advanceed高级选项面板,选择HttpClient4类型的HttpRequest请求实现。 在即使选择了Use KeepAlive 长连接协议...

正则表达式全部符号解释

字符 描述 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。' ' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ' ' 或 ' ' 之后的位置。...

Jmeter系列(43)- 详解 Jmeter 图形化 HTML 压测报告之 Charts 模块

如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 可以搭配上一篇博客来看哦,是一个整体内容:https://www.cnblogs.com/poloyy/p/13278920.html Charts 介绍 包含了各种详细信息图表,比 GU...

Java基础 -- 字符串(格式化输出、正则表达式)

一 字符串 1、不可变String String对象是不可变的,查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则没有改变。 看看下面的代码: public class Immutable { public static...

Jmeter入门13 jmeter发送application/octet-stream二进制流数据

http接口请求header里面 content-type:application/octet-stream (二进制流数据),如何用jmeter发送请求? 1添加http请求头 2http请求files upload里面写上文件的绝对地址 发送的文件内容:1 由开发提供的文件 2有的是通过fiddler抓包获取的二进制流拷贝到文件里保存 theend...

Jmeter原理

Jmeter结构体系及运行原理  Jmeter结构体系 把Jmeter的结构体系拆分为三维空间,如图:   X1~X5:是负载模拟的一个过程,使用这些组件来完成负载的模拟; X1:选择协议,模拟用户请求,检查服务器响应是否正确,然后收集结果信息; X2:完善测试脚本部分,包括参数化,关联等; X3:控制测试脚本业务逻辑; X4:集合点,模拟用户并发; X...