当前位置: 首页 > news >正文

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博客

http://www.dtcms.com/a/453415.html

相关文章:

  • 深度学习之神经网络2(Neural Network)
  • 做UI设计的网站网站界面设计尺寸
  • Python全栈(基础篇)——Day06:后端内容(定义函数+调用函数+实战演示+每日一题)
  • C++算法·贪心例题讲解
  • 成都正规集团网站制作维护商业综合体
  • 网站做生鲜线下推广建议wordpress可视化编辑主题
  • 《投资-81》价值投资者的认知升级与交易规则重构 - 第一层:商业模式详解、常见的优质模式商业模式、价值投资选择的标准
  • UI设计(一)应用商店展示图标封面标题——东方仙盟筑基期
  • 空间制作网站网站建设目标计划书
  • JAVA算法练习题day34
  • [Java]PTA:(选做) jmu-Java-03面向对象基础-覆盖与equals
  • 网站建设图片logo电子商务就是网络营销
  • 机器学习基础入门(第四篇):无监督学习与聚类方法
  • Go基础:一文掌握Go语言泛型的使用
  • iBizModel 实体逻辑(PSDELOGIC)中的界面逻辑子类(VIEWLOGIC)详解
  • pywebview:用Python+Web技术打造轻量级桌面应用!
  • python 做办公网站移动应用开发学什么
  • 数据库迁移migration
  • Channel 和 Flow 选择场景对比 (例子:不停发事件的场景)
  • 《Vuejs设计与实现》第 18 章(同构渲染)(下)
  • jsp网站开发大作业长春网站建设wang
  • 淄博网站建设网宽河北网站建设推广电话
  • Django ORM 详解
  • C语言模拟面向对象编程方法之多态
  • 温州市建设工程管理网站温州建设网站哪家好
  • 划时代的技术飞跃:OpenAI DevDay 2025 全面深度解读
  • 做网站的网页图片素材怎么找长春做网站哪家便宜
  • 计算机操作系统:操作系统的发展过程
  • 未来之窗昭和仙君 (十三) 对话框组件— 东方仙盟筑基期
  • 茶叶公司网站建设策划书制作展示型网站公司哪家好