jmeter JSON提取器JSON PATH语法

JSON提取器
JSON提取器是专门用来对返回的响应结果是application/json格式的报文进行提取
响应:
在这里插入图片描述
在这里插入图片描述

添加路径:
在这里插入图片描述
JSON提取器,变量应用范围,默认选择Main sample only即可
在这里插入图片描述
变量路径的语法规则可以参考下面的:JSON PATH语法如下列表,具体语法使用规则,还需要大家多多尝试,可以在察看结果树中切换成JSON Path Tester模式进行测试。

怎么写JSON PATH,只有写出正确的JSON PATH,才能获取到我们需要的变量值,默认我们jmeter的察看结果树显示的结果是Text文本格式,这样我们就不能快速的看出变量的层级,所以需要把查看结果树的显示格式改成JSON Path Tester,该查看结果树还支持直接对结果进行调试
在这里插入图片描述
假如想获取第一个list里面的id
在这里插入图片描述
表达式:$…list[0].list[0].id

实际工作中,可能返回的查询结果经常会变化,这时候如果在写死数组索引的位置,比如上面给大家介绍的,写成 . . l i s t [ 0 ] . l i s t [ 0 ] . i d ,如果系统新增了项目,可能就会导致取的值不正确,这时候就需要用到另外一种取值方式, ..list[0].list[0].id,如果系统新增了项目,可能就会导致取的值不正确,这时候就需要用到另外一种取值方式, ..list[0].list[0].id,如果系统新增了项目,可能就会导致取的值不正确,这时候就需要用到另外一种取值方式,…list[?(@.carTypeName==“小面包”)].id,该json path可以通过一个变量定位到自己所在的数组的索引,然后在去取需要的id,比如carTypeName这个值是唯一值,就可以通过该值取到需要的值,语法如下$…然后后面跟数组名称,本文为list,然后跟[?(@.carTypeName==“小面包”)],其中carTypeName是序列中的一个唯一值,可以根据需要修改,“小面包"是carTypeName实际为什么值就填什么,最后在加”."后面跟你需要取的字段名如id,pah都行,只要在这个数组中存在

一步步调试
在这里插入图片描述
在这里插入图片描述

这样就算以后排序了也可得到固定的值。
在这里插入图片描述

JSON PATH语法如下列表
在这里插入图片描述

JSON怎么通过一个提取器提取多个变量,多个变量时则每个变量用“;”间隔开,正则表达式、匹配序列、默认值也一样,需要用“;”隔开,下面先介绍当正则表达式取固定的序列的时候,填写的规则如下图
在这里插入图片描述

当表达式取任意序列时(匹配所有符合的值),填写规则如下图
在这里插入图片描述

返回结果为application/json格式的都用json path取值,不用正则

正则表达式,具体语法使用规则参考https://www.runoob.com/regexp/regexp-syntax.html

json表达式里面可以用jmete的变量的,如下:
在这里插入图片描述

参考:https://www.cnblogs.com/Jmeter-Automation/p/12730661.html

### 如何在 JMeter 中解析和提取 JSON 数据 #### 使用JSON Extractor组件 为了有效地从HTTP响应中获取所需的JSON数据,在JMeter测试计划里可以加入名为“JSON Extractor”的后置处理器。此组件允许指定一个或多个变量名称以及对应的JSONPath表达式,从而实现对复杂结构化数据的选择性抽取[^1]。 配置方法如下: - **Name**: 可自定义该取样器的名字以便识别; - **Apply to**: 定义作用范围,默认为上层Sampler产生的Response Data; - **Variable Names**: 设定存储所提结果的环境变量名; - **JSON Path Expressions**: 输入遵循标准语法格式的查询语句以定位目标字段位置; - **Match No. (0 For Random)**: 当存在多条匹配记录时可设置具体序号来选取某一条;设为`0`表示随机挑选任意一项作为输出; - **Default Values**: 如果找不到符合条件的内容,则返回默认值而非报错终止流程。 ```json { "store": { "book": [ {"category": "fiction", "title": "The Hobbit"}, {"category": "fantasy", "title": "A Game of Thrones"} ] } } ``` 假设上述是一个简单的书籍商店列表示例,要从中取出第二本书籍(`"A Game of Thrones"`),可以在`JSON Path Expressions`框内填入`.store.book[1].title`,并将相应的变量命名为`bookTitle`. #### 验证JSON路径的有效性 当不确定自己编写的JSON路径是否能够准确命中预期节点的时候,“Test”按钮可以帮助快速验证其合法性并即时查看可能的结果集。只要保证表达式的准确性就能确保最终能顺利抓取到想要的信息[^3]. #### 处理复杂的嵌套型JSON文档 面对层次更深、内部关系更紧密的数据模型时,除了依赖于基础版的JSON Extractor外,还可以考虑引入BeanShell脚本配合正则表达式或其他编程逻辑完成更加精细的操作。不过需要注意的是这种方式相对较为繁琐一些,仅适用于特殊场景下的需求满足[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值