尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

完整教程:JMeter之 json提取器与json path语法

完整教程:JMeter之 json提取器与json path语法
📅 发布时间:2026/6/20 8:42:25

完整教程:JMeter之 json提取器与json path语法

Json资源

  • JSONPath 在线练习

  • Json Path 语法说明

  • JsonPath java jar包,当你发现jmeter Json提取器满足不了你的场景时,你就可以研究这个jar包了。

配套练习:

测试人专属练手项目上线了

Jmeter Json提取器基本应用

JSON提取器字段说明:

  • Apply to:应用范围

  • Names of created variables :接收值的变量名,自定义,多个变量用分号分隔

  • JSON Path expression: json path表达式,也是用分号分隔

  • Match No.(0 for Random):0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1

  • Compute concatenation var(suffix_ALL):如果找到许多结果,则插件将使用分号将它们连接起来,并将其存储在名为<variable name> _ALL的var中

  • Default Values: 缺省值,匹配不到值的时候取该值,可写error。

提取一个值

常规这样写就行

提取多个值

提取所有值

Json Path语法

操作示例数据

{"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},{"category": "fiction","author": "Evelyn Waugh","title": "Sword of Honour","price": 12.99},{"category": "fiction","author": "Herman Melville","title": "Moby Dick","isbn": "0-553-21311-3","price": 8.99},{"category": "fiction","author": "J. R. R. Tolkien","title": "The Lord of the Rings","isbn": "0-395-19395-8","price": 22.99}],"bicycle": {"color": "red","price": 19.95}}
}

练习方式:在jmeter中新增 jp@gc - Dummy Sampler ,把示例资料放到响应中。

操作符说明

操作符说明
$根元素
@过滤器断言(filter predicate)处理的当前节点对象,类似于this
. or []子元素
n/a父元素
*通配符,匹配所有的元素
. .递归搜索,不管位置,选择所有符合条件的条件
[]

数组索引和过滤器

[,]连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
[start?step]数组切片操作
?()应用过滤表示式,可进行过滤管理
()拥护表达式计算

一个典型的过滤器:获取所有价格大于9的价格数,$.store.book[?(@.price> 9)].price,其中

[] 在JsonPath中有两种主要用途:

  • 数组索引:$.store.book[0],访问数组的特定位置
  • 过滤器:$.people[?(@.age > 18)],条件筛选数组元素(这里的作用是过滤器)

? 表示开始一个过滤表达式,类似于SQL中的WHERE子句。

@ - 当前处理节点,也就是 $.store.book 这个节点

函数

函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。

函数描述输出示例
min()供应数字数组的最小值Double
max()提供数字数组的最大值Double
avg()提供数字数组的平均值Double
stddev()提供数字数组的标准偏差值Double
length()给出数组的长度Integer$..roleList.length()

通过注意:函数不能在jmeter里面调试获取结果,但是能够在beanshell里面利用下图。

过滤器运算符

比较运算符

操作符描述示例
==left等于right(注意1不等于'1')取title等于Sayings of the Century的价格
$.store.book[?(@.title=="Sayings of the Century")].price
!=不等于
<小于
<=小于等于
>大于获取所有价格大于9的价格数
$.store.book[?(@.price> 9)].price
>=大于等于
=~匹配正则表达式名单管理未分配列表,通过手机尾号查订单号:$.data.datas[?(@.phone =~ /.*5117/)].order_id,正则表达式内容在两个/ /内。

逻辑运算符

运算符描述示例
&&逻辑与$.store.book[?(@.title=="Sayings of the Century" && @.category =="reference"  )].price
||逻辑或$.store.book[?(@.title=="Sayings of the Century" || @.category =="fiction"  )].price
!逻辑非?(!@.active)

存在性检查运算符

运算符描述示例
in存在于列表中?(@.author in ['Evelyn Waugh', 'Nigel Rees'])
nin不存在于列表中?(@.size nin ['XL', 'XXL'])
contains包含某个值?(@.name contains '张')
empty为空检查?(@.tags empty)

正则表达式匹配

运算符描述示例
=~正则表达式匹配?(@.email =~ '/.*@gmail\\.com/')

JMeter中启用jsonpath的问题

在使用jmeter进行接口自动化化时,尝试过不同jar包,不同的包适用的表达式不同。

fastjson.jar (弃用)

弃用原因:不支持 $..[?(@.id=='123')].status 这种匹配的写法

github地址:https://github.com/alibaba/fastjson/wiki/JSONPath
使用教程:https://www.cnblogs.com/jajian/p/10051901.html

  • 在测试时,发现在JsonPath在线练习,里能使用一次提取多个值$.store.book[0][category,author]这种表达式,但是jmeter的json提取器提取不了。

json-path.jar (用这个)

学习参考:
https://github.com/json-path/JsonPath
https://www.jianshu.com/p/c773d28b88b4
jmeter 本身有一个处理jsonpath的jar包,但是在beanshell直接引用时会报错,会说找不到JsonPath.read的方法,反正百度没明白为什么会这样,直接参考beanshell 使用jsonpath解析json报错

后续,关于json-path.jar 使用遇到的问题:

【JMeter】jmeter导入json-path.jar包的克服方法_problem in beanshell script. org.apache.jorphan.ut-CSDN博客

相关新闻

  • 简洁思维:python实现插入排序、冒泡排序和选择排序
  • 2025 年 11 月不锈钢酸洗钝化液厂家推荐排行榜,环保型不锈钢管酸洗钝化液,不锈钢清洗钝化液,酸洗钝化处理与不锈钢清洗剂公司推荐
  • 2025 年 11 月 Type-C 连接器厂家推荐排行榜,Type-C 连接器分析,Type-C 连接器模具,高性能连接方案专业制造商精选

最新新闻

  • 中原卖黄金避坑要点,实体店资质辨别教程合扬全程公开鉴价 - 奢侈品交易观察员
  • 用什么方法把照片改为385*441像素?证件照规格调整经验 - 像素测评
  • Gitee Pages迁移与Jekyll博客重生(从零到一实战)
  • 2026年宁波黄金回收门店排行榜top5 鄞州海曙江北靠谱变现门店测评 - 名奢变现站
  • 术语俗话 --- 进程/线程/协程
  • 即梦Seedance 2.0实测指南:节奏锚点、骨骼权重与帧连续性调优

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号