jmeter--JSON Extractor 用法
JMeter处理大部分请求返回的结果,都是json。对于请求返回的结果,处理以后作为其他请求的参数,有一个方便使用的插件:JSON Extractor
JSON Extractor中文叫做json提取器。
设置内容如下:
1、names(名称):提取器的名称
2、comments:提取器功能解释
3、Apply to(应用范围):
Main sample and sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample,一般选择这个就可以。
Sub-samples only:应用于子sample
4、变量提取内容设置:
Names of created variables:接收提取值的变量名,建议英文
JSON Path expression: json表达式中最关键的内容是json path expression。语法如下:
jsonpath |
表示值 |
jsonpath |
表示值 |
$ |
根节点 |
. 或者 [] |
子节点 |
@ |
当前节点 |
?() |
过滤条件 |
* |
所有子节点 |
() |
支持表达式计算 |
.. |
选择所有符合条件的节点 |
[start:stop:step] |
数组切片运算符 |
[] |
迭代器下标,例如数组下标 |
[,] |
支持迭代器内多选 |
i |
对大小写不敏感 |
=~ |
正则表达式,例如匹配字符串为 /.*指定字符串.*?/i |
用到的逻辑运算符:
举个例子:
{
"code": 0,
"data": {
"loanArray": [{
"name": "test_1",
"priority": 0,
"list": [{
"period": "24期",
"id": 66601
},
{
"period": "36期",
"id": 2792
}
]
},
{
"name": " test_2",
"priority": 1,
"list": [{
"period": "24期",
"id": 66637
},
{
"period": "36期",
"id": 66633
}
]
},
{
"name": " test_3",
"priority": 2,
"list": [{
"period": "24期",
"id": 66646
},
{
"period": "36期",
"id": 66642
}
]
},
……
],
"loanP": [{
"id": 2,
"keys": "CASH_FLOW",
"name": "name_1"
},
……
]
},
"mask": "c1b8333a-732c-4666f-adad-b68b0b275f65",
"msg": "success",
"timestamp": 1575452653
}
要提取loanArray数组下name==" test_1"的list下的id
表达式如下(注意全部是英文格式):
$.data.loanArray[?(@.name==“test_1”)].id
或者$..loanArray[?(@.name==“test_1”)].id
要提取loanArray数组下priority超过1的list下的id值可以写作:
$.. loanArray[?(@.priority>1)].id
要提取loanArray数组下name包含“ test”的list下的id可以写作:
$.. loanArray[?(@.name=~/.*test.*?/i)].id
5、Match No.(0 for Random):匹配数是指匹配第几个。匹配数字(0代表随机,1代表第一个,-1代表所有)如果是-1,则是匹配所有。
如上图:可以一次从json返回中提取多个参数,相互之间按照英文;来隔开;注意:当json提取器要提取两个值(或两个以上)的时候,每一个字段都必填值,且字段值的数量要一致(勾不勾 Compute concatenation var 看需求下面介绍)。字段值数量不一致则没法提取值,会报错“Mismatch between number of variables, json expressions and default values”。
6、 Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存为数组,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作,如:
7、Default Values:缺省值。即如果未匹配到数值,默认是多少。
最新文章
- java.lang.OutOfMemoryError: Java heap space解决办法
- 短信SMS的接收
- [转帖] 安装Eclipse插件长时间卡在 calculating requirements and dependencies
- opencv之图像膨胀
- Retrofit2.0+OkHttp打印Request URL(请求地址参数)
- 微信小程序之----组件
- Charles安装破解及使用
- ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉
- 计算机网络基础知识-OSI七层协议模型
- Go语言系列(八)- Goroute和Channel
- 轻松理解AOP(面向切面编程)
- JQUERY-自定义插件-ajax-跨域访问
- VS2015 + OPENCV + CUDA 安装流程
- 9、字符串转数字用int、因为input里面接受的全部是字符串
- 关于EOF的使用的好文章
- Compiler Error: Function call with parameters that may be unsafe
- Single Number III leetcode java
- Oracle数据库创建表空间
- Django 项目中设置缓存
- REST接口设计规范总结