如何在JMeter中用正则表达式或JSON Path提取器解析大型JSON
在JMeter中解析JSON提取StudentID、TermID等值的方法
一、优先用JSON Path提取器(适配结构化JSON)
JSON结构明确的情况下,JSON Path比正则表达式更精准,操作步骤如下:
添加提取器:在返回目标JSON的HTTP请求节点上右键 → 添加 → 后置处理器 → JSON Path提取器。
提取TermID:
- 引用名称:自定义变量名,比如
TermID - JSON Path表达式:可以用全局匹配的
$..TermID,或者更精准的$[3].TermID(TermID在最外层数组的第4个元素,索引从0开始计数为3) - 匹配数字:填
1(取第一个匹配结果) - 默认值:填
NOT_FOUND(提取失败时的备用值)
- 引用名称:自定义变量名,比如
提取StudentID:
- 提取所有StudentID:
- 引用名称:
StudentID - JSON Path表达式:
$..StudentID - 匹配数字:填
-1(提取全部匹配项,会自动生成StudentID_1、StudentID_2这类变量,StudentID_matchNr会返回匹配的总数量)
- 引用名称:
- 提取单个StudentID:
- 取第一个的表达式:
$[3].Signers[0].StudentID - 取第二个的表达式:
$[3].Signers[1].StudentID
- 取第一个的表达式:
- 提取所有StudentID:
二、用正则表达式提取器(备选方案)
如果场景限制无法使用JSON Path,可采用正则表达式提取:
添加提取器:在目标HTTP请求节点上右键 → 添加 → 后置处理器 → 正则表达式提取器。
提取TermID:
- 引用名称:
TermID - 正则表达式:
"TermID"\s*:\s*"([^"]+)" - 模板:
$1$(提取正则捕获组的内容) - 匹配数字:
1 - 默认值:
NOT_FOUND
- 引用名称:
提取StudentID:
- 提取所有StudentID:
- 引用名称:
StudentID - 正则表达式:
"StudentID"\s*:\s*"([^"]+)" - 模板:
$1$ - 匹配数字:
-1
- 引用名称:
- 提取单个StudentID:匹配数字填
1取第一个结果,填2取第二个结果即可。
- 提取所有StudentID:
内容的提问来源于stack exchange,提问作者fakhrul
相关产品推荐
相关产品推荐

