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

如何使用JMeter获取JSON响应中首个同名字段的值

在JMeter中提取JSON重复字段的首次出现值

我需要从JSON响应中获取同名但值不同的字段的首次出现值。例如,我要获取多次出现的"status"字段的首个值,即"new",对应的JSON示例如下:

{"ticketId":"216574537","timestamp":"3699689369843","targetType":"TMDeviceTicket","number":"4","time":"03/16/2018 11:30:00","status":"new","partOns":[],"itrEtrs":[{"componentId":"218318169","creationTimestamp":"03/28/2018 11:07:00","deviceType":"LAT","itrFlag":"false","restorationTimestamp":"03/28/2018 16:00:00","stormMode":"N"},{"oopId":"116400085","timestamp":"3699689369919","targetType":"TMRepairActionRefuseLateral","auto":"true","description":"Refuse B Lateral","deviceFplId":"268221704","actualDeviceType":"LATU","deviceDdbKey":"8614152820","deviceTroubleCoordinateX":"863937","deviceTroubleCoordinateY":"459296","childDevices":"List(268233640, 268233641, 268233642)","previousProtectiveDeviceStack":"List(23282601, 23281142)","discSwitch":"Refuse B Lateral","fuseSize":"65","fuseType":"K","operatedDevice":"fuse","overhead":"false","phase":"B","rcOff":"false","resolutionDateTime":"03/28/2018 11:29:00","scheduled":"true","status":"complete","view":"Lateral","identitySetRepairAction":[]}]

请问如何使用JMeter实现该需求?


方法1:用JSON Extractor(最简单推荐)

这是JMeter自带的专用JSON提取工具,配置零代码,新手友好:

  • 右键点击你的HTTP请求,选择 Add > Post Processors > JSON Extractor
  • 在配置界面填写:
    • Reference Name:自定义变量名,比如first_status(后续用这个变量调用结果)
    • JSON Path Expression:直接写$.status——这个表达式会精准匹配根节点下的第一个status字段(也就是你要的"new")
    • Match No.:填1(或者留空,默认就是取第一个匹配项)
    • 其他参数保持默认即可

配置完成后,后续请求或断言里直接用${first_status}就能引用提取到的首个status值了。

方法2:用JSR223 PostProcessor(更灵活)

如果需要扩展复杂逻辑,或者习惯用代码处理,推荐用Groovy脚本实现:

  • 右键点击HTTP请求,选择 Add > Post Processors > JSR223 PostProcessor
  • Script Language选择Groovy(性能比其他脚本语言更优)
  • 在Script框中输入以下代码:
    import groovy.json.JsonSlurper
    
    // 获取接口响应内容
    def response = prev.getResponseDataAsString()
    def json = new JsonSlurper().parseText(response)
    
    // 直接提取根节点的status(第一个出现的同名字段)
    def firstStatus = json.status
    
    // 将结果存入JMeter变量
    vars.put("first_status", firstStatus)
    

同样,后续可以通过${first_status}调用提取到的值。

为什么能拿到第一个值?

JSON解析时,根节点的status是最外层的首个匹配项,不管嵌套结构里有没有同名字段,$.status或直接访问json.status都会优先读取根节点的这个值,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

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