jmeter之json提取器详解(史上最全)(代码片段)

51benpao 51benpao     2022-12-15     735

关键词:

参考资料:https://www.bbsmax.com/A/D854lmBw5E/

Jsonpath在线测试:http://jsonpath.com/


实际工作中用到的一些场景:

  1. 提取某个特定的值
  2. 提取多个值
  3. 按条件取值
  4. 阵列取值(返回所有元素的列表/数组)
  5. 提取多个值

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

注意:

  1. 使用时,需要用下标读取,如$friend_id_1、$friend_id_2........

  2. 特别说明一下,如果想要获取返回元素的数量,可以用$friend_id_matchNr

  3. 也可以使用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)》面试必备 查看详情