如何用JMeter提取无效JSON中_MESSAGE_字段的前五位值?
解决JMeter从无效JSON中提取_MESSAGE_字段前五位的方案
方法1:正则表达式提取器(快速实现)
无需修复JSON格式,直接用正则匹配目标字段的前五位值:
- 在目标HTTP请求节点下添加「正则表达式提取器」
- 关键配置:
- 引用名称:
message_prefix(自定义变量名,后续可通过${message_prefix}调用) - 正则表达式:
\\"_MESSAGE_\\":\\"([0-9]{5}) - 模板:
$1$ - 匹配数字:
1
- 引用名称:
- 补充说明:如果字段值前五位可能包含非数字字符,可改用
\\"_MESSAGE_\\":\\"([^,]{5}),匹配逗号前的任意前五位字符。
方法2:JSR223提取器(更健壮)
通过Groovy脚本清理无效JSON并解析提取,适配复杂场景:
- 在目标HTTP请求节点下添加「JSR223提取器」
- 配置:
- 语言选择:
Groovy - 脚本内容:
- 语言选择:
// 获取原始响应内容 def rawResponse = prev.getResponseDataAsString() // 移除外层引号并消除转义符,转换为合法JSON字符串 def validJson = rawResponse.replace(/^"|"$/, "").replaceAll(/\\/, "") // 解析JSON并提取_MESSAGE_字段 def jsonData = new groovy.json.JsonSlurper().parseText(validJson) def fullMessage = jsonData._MESSAGE_ // 截取前五位并存入变量 vars.put("message_prefix", fullMessage.substring(0, 5))
- 原理:先修复无效JSON格式,再通过Groovy的JSON解析器安全提取字段,最后截取目标长度,避免正则可能出现的匹配误差。
内容的提问来源于stack exchange,提问作者Samson
相关产品推荐
相关产品推荐

