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

如何在JMeter中按指定条件提取JSON中的同名字段值?

在JMeter中提取指定条件的JSON字段值

嘿,我来给你一步步讲怎么搞定这个需求——从返回的JSON数组里,找到customerPpid=467133011的对象,提取它对应的customerFormattedPhoneNumber值。这里有两种实用方法,你可以根据情况选:

方法1:用JSON Extractor(推荐,简单高效)

这是JMeter自带的专门处理JSON的组件,不用写代码,配置一下就行:

  • 第一步:在返回目标JSON的HTTP请求下面,右键选择 Add -> Post Processors -> JSON Extractor
  • 第二步:填写以下配置项:
    • Reference Name:给提取到的值起个变量名,比如targetPhone(后续用${targetPhone}调用)
    • JSON Path Expression:填这个路径表达式:
      $.[?(@.customerPpid == '467133011')].customerFormattedPhoneNumber
      

      注意:因为你的customerPpid是字符串类型,所以要给数值加单引号;如果是数字类型就去掉引号

    • Match No.:填1(我们只需要第一个匹配的结果,这里也只有一个符合条件的对象)
    • Default Value:可以填NOT_FOUND之类的默认值,防止没找到结果时变量为空
  • 第三步:配置完后,运行脚本,就能用${targetPhone}拿到你要的(786)402-9010了

方法2:用JSR223 PostProcessor(适合复杂逻辑)

如果后续需要做更多自定义处理,或者你更习惯写代码,就用这个方法,推荐选Groovy语言(性能最优):

  • 第一步:同样在HTTP请求下面,右键选择 Add -> Post Processors -> JSR223 PostProcessor
  • 第二步:在组件的Language下拉框里选groovy
  • 第三步:在Script框里粘贴这段代码:
    import groovy.json.JsonSlurper
    
    // 获取接口返回的JSON字符串
    def responseBody = prev.getResponseDataAsString()
    def jsonParser = new JsonSlurper()
    def jsonArray = jsonParser.parseText(responseBody)
    
    // 遍历数组,找到符合customerPpid条件的对象,提取手机号
    def desiredPhone = jsonArray.find { item -> item.customerPpid == '467133011' }?.customerFormattedPhoneNumber
    
    // 将结果存入JMeter变量,找不到的话用默认值
    vars.put("targetPhone", desiredPhone ?: "NOT_FOUND")
    

    代码里的?.是安全导航符,避免找不到对象时抛出空指针异常

  • 第四步:同样用${targetPhone}引用提取到的值

验证提取结果的小技巧

可以添加一个Debug Sampler到测试计划里,运行脚本后查看Debug Sampler的响应数据,就能看到targetPhone变量是否正确获取到了目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:04:29