JMeter中响应body为字符串类型时如何提取JSON中的Session值
解决方案:从嵌套JSON字符串中提取Session编号
问题分析
接口返回的body字段是JSON格式的字符串,而非直接可解析的JSON对象,因此常规的JSON提取器无法直接读取其中的session值,需要先对body字符串进行二次解析。
可行方案
方案1:使用脚本后置处理器(以JMeter为例)
通过Groovy脚本先解析外层响应,再解析body字符串:
import groovy.json.JsonSlurper // 解析外层响应JSON def outerResponse = new JsonSlurper().parseText(prev.getResponseDataAsString()) // 解析body字段中的JSON字符串 def bodyJson = new JsonSlurper().parseText(outerResponse.body) // 将session值存入变量 vars.put("session_id", bodyJson.session)
方案2:使用正则表达式提取器
利用Session编号的UUID格式特征,直接从整个响应内容中匹配:
- 正则表达式:
"session":\s*"([0-9a-f-]+)" - 模板:
$1$ - 匹配序号:
1
方案3:使用Postman内置脚本
在Postman的Tests标签中添加以下代码:
// 解析外层响应 let response = pm.response.json(); // 解析body字符串为JSON对象 let bodyData = JSON.parse(response.body); // 将session存入环境变量 pm.environment.set("sessionId", bodyData.session);
内容的提问来源于stack exchange,提问作者Rohit Reddy
相关产品推荐
相关产品推荐

