Postman前置脚本中res.json()返回undefined求助(状态码200)
Postman前置脚本res.json()返回undefined的解决办法
确认响应体是否为有效JSON
状态码200不代表响应体一定是JSON,先去Postman的「响应」面板查看「Body」标签:- 如果响应体为空,
res.json()自然返回undefined; - 如果是纯文本/其他格式,得用
res.text()替代res.json()。
- 如果响应体为空,
修正请求的异步写法
Postman前置脚本里发送请求必须用异步回调,同步写法会导致还没拿到完整响应就执行解析:
// 错误示例:同步调用无法获取正确响应 var res = pm.sendRequest("https://your-api-url"); var r = res.json(); console.log(r);
正确写法:
pm.sendRequest("https://your-api-url", function (err, res) { if (!err) { // 先判断响应体是否存在 if (res.text()) { try { var r = res.json(); console.log(r); } catch (e) { console.log("响应不是有效JSON:", res.text()); } } else { console.log("响应体为空"); } } else { console.log("请求出错:", err); } });
- 检查响应头Content-Type字段
如果响应头的Content-Type不是application/json,Postman的res.json()可能解析失败。此时可以先拿文本内容再手动解析:
pm.sendRequest("https://your-api-url", function (err, res) { if (!err) { var textContent = res.text(); if (textContent) { try { var parsedData = JSON.parse(textContent); console.log(parsedData); } catch (e) { console.log(JSON解析失败:", e); } } } });
- 排查响应压缩问题
若接口返回gzip压缩的响应,可尝试关闭Postman请求设置里的「Automatically decode response」选项,再重新测试(此情况较少见)。
内容的提问来源于stack exchange,提问作者Baskaran S
相关产品推荐
相关产品推荐

