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

遍历Postman JSON响应按条件存全局变量遇报错,求解决方案

问题解决:Postman测试脚本遍历数组时的TypeError错误

错误原因分析

  1. 循环边界越界:数组索引从0开始,当你用i <= users_len时,循环会执行到i = users_len,此时res.data.users[i]是undefined,读取isRetail自然会抛出Cannot read properties of undefined错误。
  2. 布尔值与字符串错误比较:返回的JSON中isRetail是布尔类型(true/false),但你用了和字符串"true"/"false"比较,这会导致判断逻辑完全失效(布尔值true和字符串"true"并不相等)。
  3. 变量未声明:is_retail变量未用let/const声明,会隐式成为全局变量,不符合代码规范。

修正后的测试代码

简洁版(推荐使用for...of遍历)

const res = pm.response.json();
const users = res.data.users;

for (const user of users) {
    const isRetail = user.isRetail;
    if (isRetail === true) {
        pm.globals.set("UserId", user.id);
    } else if (isRetail === false) {
        pm.globals.set("orgUserId", user.id);
    }
}

保留原for循环写法的修正版

const res = pm.response.json();
const users_len = res.data.users.length;

for (let i = 0; i < users_len; i++) {
    const user = res.data.users[i];
    const is_retail = user.isRetail;
    
    if (is_retail === true) {
        pm.globals.set("UserId", user.id);
    } else if (is_retail === false) {
        pm.globals.set("orgUserId", user.id);
    }
}

关键修改说明

  • 将循环条件从i <= users_len改为i < users_len,确保只访问数组存在的索引。
  • 把字符串比较"true"/"false"改为直接和布尔值true/false比较,保证判断逻辑正确。
  • 用const/let声明所有变量,避免隐式全局变量。
  • for...of循环无需手动处理索引,代码更简洁易读,降低出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:22:54