关键词:
参考资料:https://www.bbsmax.com/A/D854lmBw5E/
Jsonpath在线测试:http://jsonpath.com/
实际工作中用到的一些场景:
- 提取某个特定的值
- 提取多个值
- 按条件取值
- 阵列取值(返回所有元素的列表/数组)
- 提取多个值
Jsonpath提取器需要另外安装
- 下载plugins-manager.jar加入其加入JMETER_HOME/lib/ext目录,
- 重新启动JMeter,
- 点击Options > Plugins Manager顶部菜单,
- 选择Available Plugins标签,
- 选择Json Plugins并双击应用更改并重新启动JMeter。
使用方法:
Json Path提取器应放在HTTP Sampler下。可设置的参数有:
- 变量名称:分号单独的变量名称,
- JSON Path Expressions:从json响应中提取内容的表达式,
- 匹配数字:-1对于所有,0对于随机的,n对于第n个,
- Compute concatenation var:创建一个$foo_ALL包含所有提取值的串联的变量,
- 默认值:如果表达式不适用于正在处理的json文档,使用此处给定的默认值。
接下来用一个实际案例来演示Json提取的一些用法:
示例:有如下json
"code": 0,
"data":
"total": 10,
"pageNo": 1,
"pageSize": 100,
"items": [
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560056,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735865761759234,
"createTime": 1591169490879,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560056,
"id": 1268082870707040258,
"close": 0,
"status": 2
,
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560092,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735866185383938,
"createTime": 1591169491390,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560092,
"id": 1268082872854523906,
"close": 0,
"status": 2
,
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560126,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867363983362,
"createTime": 1591169491862,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560126,
"id": 1268082874830041089,
"close": 0,
"status": 2
,
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560164,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867825356802,
"createTime": 1591169492296,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560164,
"id": 1268082876654563330,
"close": 0,
"status": 2
,
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560310,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867003273217,
"createTime": 1591169493876,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560310,
"id": 1268082883277369345,
"close": 0,
"status": 2
,
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560376,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735868571942913,
"createTime": 1591169494629,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560376,
"id": 1268082886439874561,
"close": 0,
"status": 2
],
"timestamp": null
,
"codeMsg": "success"
1、提取某个特定的值
Jsonpath | 结果 |
---|---|
$.data.total | 10 |
$..total | 10 |
$..items[1].userId | 1268082752079560705 |
2、提取多个值
- 比如要提取items列表里所有的friendId
$..friendId
$..[*].friendId
$.data.items[*].friendId
三种写法都可以,结果为:
Result[0]=1267735865761759234
Result[1]=1267735866185383938
Result[2]=1267735867363983362
Result[3]=1267735867825356802
Result[4]=1267735864650268673
Result[5]=1267735865363300353
Result[6]=1267735866688700417
Result[7]=1267735867003273217
Result[8]=1267735868232204289
Result[9]=1267735868571942913
注意:
-
使用时,需要用下标读取,如$friend_id_1、$friend_id_2........
-
特别说明一下,如果想要获取返回元素的数量,可以用$friend_id_matchNr
-
也可以使用foreach控制器循环读取,这里不再描述。
3、按条件提取值
有时候只需要提取某个特定条件下的参数,比如现在想要提取创建时间为1591169490879的friendId
$.data.items[?(@.createTime ==1591169490879)].friendId
4、阵列提取
提取任何节点的某个key的值,比如提取friendId
$..friendId
结果为:
friend_all_1=1267735865761759234
friend_all_10=1267735868571942913
friend_all_2=1267735866185383938
friend_all_3=1267735867363983362
friend_all_4=1267735867825356802
friend_all_5=1267735864650268673
friend_all_6=1267735865363300353
friend_all_7=1267735866688700417
friend_all_8=1267735867003273217
friend_all_9=1267735868232204289
friend_all_ALL=1267735865761759234,1267735866185383938,1267735867363983362,1267735867825356802,1267735864650268673,1267735865363300353,1267735866688700417,1267735867003273217,1267735868232204289,1267735868571942913
friend_all_matchNr=10
_ALL下标是将所有元素组成一个list,像后续接口有时候参数是以数组形式来传参,这个函数就很有用,如果需要返回此函数,需要在json提取器中,勾选Compute concatenation var
5、提取多个值
json表达式:
$..[‘msg‘,‘friendId‘]
返回的变量如下:
two_1="msg":"你好,我仰慕你的才华!","friendId":1267735865761759234
two_10="msg":"你好,我仰慕你的才华!","friendId":1267735868571942913
two_2="msg":"你好,我仰慕你的才华!","friendId":1267735866185383938
two_3="msg":"你好,我仰慕你的才华!","friendId":1267735867363983362
two_4="msg":"你好,我仰慕你的才华!","friendId":1267735867825356802
two_5="msg":"你好,我仰慕你的才华!","friendId":1267735864650268673
two_6="msg":"你好,我仰慕你的才华!","friendId":1267735865363300353
two_7="msg":"你好,我仰慕你的才华!","friendId":1267735866688700417
two_8="msg":"你好,我仰慕你的才华!","friendId":1267735867003273217
two_9="msg":"你好,我仰慕你的才华!","friendId":1267735868232204289
two_ALL="msg":"你好,我仰慕你的才华!","friendId":1267735865761759234,"msg":"你好,我仰慕你的才华!","friendId":1267735866185383938,"msg":"你好,我仰慕你的才华!","friendId":1267735867363983362,"msg":"你好,我仰慕你的才华!","friendId":1267735867825356802,"msg":"你好,我仰慕你的才华!","friendId":1267735864650268673,"msg":"你好,我仰慕你的才华!","friendId":1267735865363300353,"msg":"你好,我仰慕你的才华!","friendId":1267735866688700417,"msg":"你好,我仰慕你的才华!","friendId":1267735867003273217,"msg":"你好,我仰慕你的才华!","friendId":1267735868232204289,"msg":"你好,我仰慕你的才华!","friendId":1267735868571942913
two_matchNr=10
深入java微服务之网关系列4:springcloudgateway详解(史上最全)(代码片段)
1.1 SpringCloudGateway简介SpringCloudGateway是SpringCloud的一个全新项目,该项目是基于Spring5.0,SpringBoot2.0和ProjectReactor等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。SpringCloudGateway作为Sp... 查看详情
深入java微服务之网关系列3:springcloudalibabagateway详解(史上最全)(代码片段)
九、服务网关:Gateway9.1、网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微... 查看详情
jmeter接口关联之json提取器和正则提取器
参考技术A测试如下两个接口1、短信发送接口2、短信确认接口短信确认端口请求参数需要上送,短信发送接口返回的参数,此时两个接口需要关联,我们需要提取第一个接口的返回参数值payOrderNo接口1返回参数如下"data":&q... 查看详情
jmeter之json提取器
参考技术A接口测试中,经常会遇到,某个请求的参数需要从上一个接口的返回数据中提取,那么这时候我们就需要用到j提取器了。最常见的是json提取器,下面就来介绍下json提取器的常见使用方法。Applyto:应用范围。一般使用... 查看详情
java知识点详解9,史上最全(代码片段)
tryif(true==b_chinese_file)//测试字节流读取中文乱码问题fis=newFileInputStream(ioTest.const_fileChinese);elsefis=newFileInputStream(ioTest.const_file);intread=0;while((read=fis.read())! 查看详情
史上最全面的springboot配置文件详解(代码片段)
SpringBoot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍。SpringBoot配置文件对SpringBoot来说就是入门和基础,经常会用到,所以写下做个总结以便日后查看。1.配置文件当我们构建完SpringBoot项目后,会... 查看详情
史上最全的mavenpom.xml文件教程详解
原文地址:http://blog.csdn.net/yaerfeng/article/details/26448417原创整理不易,转载请注明出处:史上最全的mavenpom.xml文件教程详解代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm<project xmlns& 查看详情
java泛型详解,史上最全图文详解!
noGenericnamesuseGenericnameslistslistlistslistabTabTvaluevalueTgetValuevaluesetValuevaluenamenumbershowshowvalueshowvaluegenericInterfaceg1g2TgenercMethodtmainargsgenericString strgenericS 查看详情
史上最全echarts可视化图表详解(代码片段)
...配置项包括每一个环节比较容易出现的问题来为大家进行详解。•安装echarts图表•使用echarts图表•echarts图表那些你一定会用到的配 查看详情
史上最全的maven的pom.xml文件详解(代码片段)
本文转自:https://www.cnblogs.com/hafiz/p/5360195.html原作者:阿豪聊干货<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 查看详情
jmeter中正则表达式提取器使用详解(代码片段)
在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调用。文中使用的正则表达式... 查看详情
jmeter之边界值提取器
...技术A1,需求:需要提取系统登录状态下的id_token2,打开jmeter5.1,添加线程组→http请求→后置处理器→边界提取器3,输入对应的引用名称,左右边界值,匹配数字输入1即可4,添加查看结果树及调试后置处理程序,查看所需提取... 查看详情
disruptor(史上最全之1):伪共享原理&性能对比实战(代码片段)
推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,请点击此链接尼恩Java面试宝典,34个最新pdf,含2000多页,不断更新、持续迭代具体详情,请点击此链接disruptor史上最全系... 查看详情
disruptor(史上最全之1):伪共享原理&性能对比实战(代码片段)
推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,请点击此链接尼恩Java面试宝典,34个最新pdf,含2000多页,不断更新、持续迭代具体详情,请点击此链接disruptor史上最全系... 查看详情
python面试合集史上最全面python面试题和详解(10套)完整版
...)等!下载地址https://pan.baidu.com/s/1XgpPig-KpR8ox0vWuTwVIw如需提取码:[打开微信]->[扫描下方二维码]->[关注数据与人]输入"800135"获取提取码 坚持电子书籍资源共享,感谢认同!如果取消关注本公众号,即使再次关注,也将无法... 查看详情
史上最全jquery知识点小结(上)(代码片段)
本节案例请移步查看:jQuery-案例欢迎学习交流!!!持续更新中…文章目录1.jQuery概述JavaScript库jQuery概念jQuery的入口函数jQuery的顶级对象$jQuery对象和DOM对象2.jQuery常用API2.1jQuery选择器基础选择器层级选择器筛选选... 查看详情
disruptor史上最全之3:8大使用场景详细图解(代码片段)
...习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送经典图书:《Java高并发核心编程(卷1)》面试必备 查看详情
disruptor史上最全之3:8大使用场景详细图解(代码片段)
...习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送经典图书:《Java高并发核心编程(卷1)》面试必备 查看详情