作者:用户2ng6zjfjen | 来源:互联网 | 2024-12-25 16:34
本文详细介绍了如何在JMeter中使用JSON提取器来获取和处理API响应中的数据。特别是在需要将一个接口返回的数据作为下一个接口的输入时,JSON提取器是一个非常有用的工具。
深入解析JMeter中的JSON提取器及其应用
在实际工作中,我们常常会遇到这样的情况:一个接口的输出需要作为另一个接口的输入。为了实现这一点,通常会使用后置处理器来提取所需的数据。JMeter提供了多种后置处理器,如JSON提取器、边界提取器和正则表达式提取器等。
本文主要介绍JSON提取器的使用方法,并探讨其在实际项目中的应用场景。
首先,在JMeter中添加JSON提取器的方法是:右键点击请求节点,选择“添加”->“后置处理器”->“JSON提取器”。接下来,我们将详细介绍JSON提取器的各项配置。
以下是JSON提取器的主要字段解释:
- Name: 提取器的名称,可以自定义。
- JSON Path Expressions: 用于指定要提取的JSON路径表达式。
- Default Values: 如果未找到匹配项,则返回此默认值。
- Names of created variables: 提取结果存储的变量名。
- Match No. (0 for Random): 指定匹配项的序号,0表示随机选择,-1表示所有匹配项。
绝对路径和相对路径都可以用于提取数据。例如:
- 绝对路径:
$.data.recordList[0].code
- 相对路径:
.code
提取到的变量可以在后续请求中通过${变量名}
引用。如果不确定JSON表达式是否正确,可以在“查看结果树”中进行调试。具体步骤如下:
- 切换到“JSON Path Tester”选项卡。
- 在表达式输入框中输入JSON提取表达式。
- 点击“测试”,下方显示提取的结果。
验证提取器是否成功提取到数据,还可以通过添加调试后置处理器来进行检查。执行请求后,在“查看结果树”中可以看到提取到的变量值。
如果需要在一个请求中提取多个字段,可以通过在“Names of created variables”中填写多个变量名,中间用分号隔开。例如:
当需要匹配所有符合条件的字段时,可以将“Match No.”设置为-1。这样可以提取到所有匹配项,并且可以通过下标访问特定的值。例如:${fh_id_0}
表示第一个值。
此外,JSON提取器还支持条件查询。例如:
$.data.recordList[*].code[?(@.test)]
提取包含test的记录。$.data.recordList[*].code[?(@.voucher_time>'2021-08-01')]
提取voucher_time
大于2021-08-01的记录。$.data.recordList[*].code[?(@.desc=~/.*测试.*?/i)]
提取desc
字段中包含“测试”的记录。$.data.recordList[*].code[?(@.sex==0)]
提取sex
字段为0的记录。
最后,勾选“compute concatenation var”选项会影响变量的引用方式:
- 勾选时,下标从1开始标识提取的第一个值。
- 不勾选时,下标从0开始标识提取的第一个值。
- 可以通过
${变量名_ALL}
获得所有匹配项的值。
参考文章:更多详情