jmeter - 是否可以读取与 jmeter 中的正则表达式匹配的 JSON JMESPath 提取器形式的所有值?
问题描述
我有以下作为 GET 调用的响应,我需要在另一个 POST 调用的有效负载中使用 100、101、102 等值。
回复:
{"id":12,"records":[{"id":100,"documentId":1, "pageNo":1},{"id":101,"documentId":2, "pageNo":1},{"id":102,"documentId":3, "pageNo":1}]}
稍后使用所需的有效载荷:
{"id":12,"records":[100,101,102]}
像 100、101、102 这样的值会随着数据的增加而进一步增加,我需要所有这些值。我使用这个 records[*].id 作为正则表达式。如果我将匹配数值设置为 1,它只返回一个值。但我需要数组形式的所有值。我该怎么做?我在 JMeter 中使用 JSON JMESpath 提取器。
解决方案
我不认为你可以使用 JSON JMESPath Extractor 来实现它,出于某种原因,JMeter 开发人员决定不坚持JMESPath 语言规范,因此查询records[*].id
返回 3 个单独的JMeter 变量而不是 JSON 数组
这里应该是这样的:
这是 JMeter 返回的内容:
所以我建议使用JSR223 PostProcessor并在 Groovy 中解析响应/创建下一个请求有效负载。
示例代码:
def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def request = [:]
request.put('id', response.id)
request.put('records', response.records.id.collect())
vars.put('payload', new groovy.json.JsonBuilder(request).toPrettyString())
您应该能够根据需要引用生成的请求数据${request}
。
更多信息:
推荐阅读
- azure - Azure Blob 存储 - 检索在存储容器中读取或写入 blob 的用户
- ios - uistackview“跳跃”中排列的子视图内的动画
- java - 静态变量在 Java 中的行为如何?我在下面解释了我的问题
- python - 无法连接服务器中的第二个客户端
- c# - 如何在单独的文件中创建类子类
- java - 如何改进这种 Java 二进制搜索方法以找到给定值的最佳百分位数?
- php - Wordpress 帖子更新不通过 wordpress 钩子更新 postmeta
- c# - 为什么我生成的带有接口的程序集实现为方法而不是属性?
- java - 如何在 Selenium WebDriver 中选择特定日期(何时:type = "date")?
- keras - 如何从变分自动编码器模型创建编码器模型?