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

JMeter中键未知时如何提取JSON的键与值?

解决JMeter中未知JSON键的提取问题

针对你提到的两个JMeter JSON提取相关问题,我给你整理了具体的解决办法:

1. 提取未知键对应的JSON值

如果你的JSON响应里键是随机生成的,但需要提取对应的值,有两种实用方式:

方式一:用JSON Extractor的通配符

在JSON Extractor里,把JSON Path表达式设为 $.*,这个表达式会匹配根节点下的所有值,返回一个值数组。

  • 假设你把变量名设为random_values,那么可以通过${random_values_1}获取第一个值,${random_values_2}获取第二个值,以此类推。
  • 这种方法适合结构简单、键数量固定的场景,比如你示例里的两个键的情况。

方式二:用JSR223 PostProcessor灵活处理

如果键的数量不固定,或者需要更复杂的逻辑,推荐用Groovy脚本(JMeter里Groovy性能最优):

  1. 添加一个JSR223 PostProcessor到目标请求下面
  2. 在脚本框里输入以下代码:
import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)

// 遍历所有值,保存到变量
def index = 1
json.each { key, value ->
    vars.put("value_${index}", value.toString())
    index++
}

脚本会自动遍历所有键值对,把每个值保存到value_1、value_2这类变量里,后续直接调用即可。


2. 提取未知的JSON键本身

JSON Extractor本身不支持直接提取键名,所以同样需要用JSR223 PostProcessor来实现:
步骤和上面类似,把脚本改成:

import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)

// 获取所有键,保存到变量
def keys = json.keySet() as List
def index = 1
keys.each { key ->
    vars.put("key_${index}", key)
    index++
}

// 如果需要把所有键拼接成一个字符串,可添加这行:
vars.put("all_keys", keys.join(","))

执行后,key_1、key_2会分别对应示例里的sadasd123242和dadsadaskljk,all_keys则是用逗号分隔的所有键字符串。

如果场景里只有一个未知键,还可以简化脚本:

import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)
def firstKey = json.keySet().iterator().next()
vars.put("first_key", firstKey)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:57:13