You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter提取器中基于Flag=false条件从指定JSON提取并捕获所有日期与ID(排除Flag=true条目)

在JMeter中提取Flag=false对应的日期与ID值

针对你的需求——从给定JSON里筛选出所有Flag=false的条目,并提取对应的日期和ID,我推荐两种实现方式,其中Groovy脚本的方案更适配你这种带有动态日期键的JSON结构:

方法1:用JSR223 PostProcessor(Groovy脚本,首推)

Groovy处理嵌套、动态键的JSON非常顺手,能精准定位所有符合条件的条目,还能保证日期和ID一一对应。

操作步骤:

  1. 在返回该JSON的HTTP请求下面,添加一个JSR223 PostProcessor。
  2. 把下面的Groovy代码粘贴到Script输入框里:
import groovy.json.JsonSlurper

// 解析响应的JSON数据
def jsonResponse = new JsonSlurper().parse(prev.getResponseData())
def dateMap = jsonResponse.data.availabilityDates

// 用来存符合条件的日期和ID
def validDates = []
def validIds = []

// 遍历每个日期对应的条目列表
dateMap.each { dateStr, items ->
    // 挑出当前日期下Flag为false的条目
    def matchedItems = items.findAll { item -> !item.Flag }
    matchedItems.each { item ->
        validDates.add(dateStr)
        validIds.add(item.id)
    }
}

// 把结果存入JMeter变量,方便后续使用
vars.putObject("valid_dates", validDates)
vars.putObject("valid_ids", validIds)

// 如果需要逗号分隔的字符串格式(比如传给后续请求):
vars.put("valid_dates_str", validDates.join(","))
vars.put("valid_ids_str", validIds.join(","))

脚本说明:

  • 先解析响应JSON,定位到存储日期的availabilityDates节点。
  • 逐个遍历日期键,筛选出该日期下Flag=false的条目,把日期和对应ID分别存入列表。
  • 最终你可以通过${valid_dates}、${valid_ids}获取列表形式的结果,或者用${valid_dates_str}、${valid_ids_str}获取逗号分隔的字符串,方便在后续JMeter元件中引用。

方法2:用JSON Path Extractor(仅提取ID,需额外处理日期)

如果只想用JMeter自带的JSON Path提取器,可以先提取所有Flag=false的ID,但对应的日期没法直接通过JSON Path获取(因为日期是动态的父级键),所以这个方法适合只需要ID的场景,或者你愿意额外处理日期的情况。

提取ID的配置:

  1. 在请求下添加JSON Path Extractor。
  2. 按下面配置:
    • Variable Name: matched_ids
    • JSON Path Expression: $..data.availabilityDates.*[?(@.Flag == false)].id
    • Match No.: -1(表示提取所有匹配的结果,而不是只取第一个)
    • Default Value: NO_MATCH

配置完成后,JMeter会把所有符合条件的ID存为matched_ids_1、matched_ids_2这样的变量,或者用${matched_ids}获取逗号分隔的所有ID。但要获取对应的日期,还是得用方法1的Groovy脚本更高效。

验证提取结果

你可以添加一个Debug Sampler,然后在查看结果树里查看valid_dates、valid_ids这些变量的值,确认是否正确提取了以下条目:

  • 日期2021-07-22,IDXYZ
  • 日期2021-07-03,IDXYZ02
  • 日期2021-07-25,IDXYZ03
  • 日期2021-07-09,IDXYZ04

内容的提问来源于stack exchange,提问作者user16298800

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:02:34