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:缺省值。即如果未匹配到数值,默认是多少。

最新文章

  1. java.lang.OutOfMemoryError: Java heap space解决办法
  2. 短信SMS的接收
  3. [转帖] 安装Eclipse插件长时间卡在 calculating requirements and dependencies
  4. opencv之图像膨胀
  5. Retrofit2.0+OkHttp打印Request URL(请求地址参数)
  6. 微信小程序之----组件
  7. Charles安装破解及使用
  8. ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉
  9. 计算机网络基础知识-OSI七层协议模型
  10. Go语言系列(八)- Goroute和Channel
  11. 轻松理解AOP(面向切面编程)
  12. JQUERY-自定义插件-ajax-跨域访问
  13. VS2015 + OPENCV + CUDA 安装流程
  14. 9、字符串转数字用int、因为input里面接受的全部是字符串
  15. 关于EOF的使用的好文章
  16. Compiler Error: Function call with parameters that may be unsafe
  17. Single Number III leetcode java
  18. Oracle数据库创建表空间
  19. Django 项目中设置缓存
  20. REST接口设计规范总结

热门文章

  1. Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!
  2. Portswigger web security academy:Stored XSS
  3. C++ Socket 简单封装
  4. Day003 位运算
  5. 修改VScode底部状态栏颜色
  6. Ping命令浅析
  7. 容器进阶:OCI与容器运行时
  8. char值不能直接用作数组下标
  9. SE_Work4_软件案例分析
  10. I/O流以及文件的基本操作