首页 > web前端 > js教程 > 正文

Postman教程:遍历JSON响应并根据条件设置全局变量

DDD
发布: 2025-09-20 23:04:01
原创
772人浏览过

postman教程:遍历json响应并根据条件设置全局变量

本文档旨在指导Postman用户如何遍历JSON响应中的数组对象,并根据特定条件(例如,isRetail字段的值)将相应的id存储到全局变量中。我们将通过一个实际示例,详细讲解如何编写Postman测试脚本来实现这一目标,并避免常见的错误。

遍历JSON响应并设置全局变量

在Postman中,经常需要从API响应中提取数据并用于后续的请求。本教程将演示如何遍历JSON响应中的数组,并根据数组中对象的属性值,设置全局变量。

示例JSON响应:

假设我们有以下JSON响应:

{
    "status": 200,
    "data": {
        "users": [
            {
                "id": 95,                
                "isRetail": true
            },
            {
                "id": 118,               
                "isRetail": false
            }
        ],
        "pagination": {
            "pageNumber": 1,
            "pageSize": 25,
            "totalCount": 2,
            "totalPages": 1,
            "isFirst": true,
            "isLast": true,
            "totalCountOnPage": 2
        }
    }
}
登录后复制

我们的目标是遍历data.users数组,如果isRetail为true,则将id存储到名为UserId的全局变量中;如果isRetail为false,则将id存储到名为orgUserId的全局变量中。

Postman测试脚本:

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online30
查看详情 Find JSON Path Online

以下是一个实现此目标的Postman测试脚本:

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

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

代码解释:

  1. res = pm.response.json();: 这行代码将Postman的响应体解析为JSON对象,并将其赋值给变量res。
  2. let users_len = res.data.users.length;: 这行代码获取data.users数组的长度,并将其赋值给变量users_len。
  3. for (let i = 0; i < users_len; i++) { ... }: 这是一个for循环,用于遍历data.users数组。 注意循环条件是 i < users_len,而不是 i <= users_len。 如果使用 i <= users_len,循环会尝试访问数组的越界索引,导致TypeError: Cannot read properties of undefined (reading 'isRetail')错误。
  4. let is_retail = res.data.users[i].isRetail;: 这行代码获取当前遍历到的用户的isRetail属性值,并将其赋值给变量is_retail。 使用 let 关键字声明变量可以避免作用域问题。
  5. if (is_retail === true) { ... } else if (is_retail === false) { ... }: 这是一个if...else if语句,用于根据is_retail的值执行不同的操作。 关键在于使用严格相等运算符 === 将 is_retail 与布尔值 true 和 false 进行比较。 避免使用字符串 "true" 和 "false" 进行比较,因为isRetail属性本身就是布尔类型。
  6. pm.globals.set("UserId", res.data.users[i].id);pm.globals.set("orgUserId", res.data.users[i].id);: 这两行代码用于设置全局变量。 pm.globals.set(variableName, variableValue) 方法用于将指定的值设置为全局变量。

注意事项:

  • 数组越界错误: 务必确保循环条件正确,避免访问数组的越界索引。 正确的循环条件应该是 i < array.length,而不是 i <= array.length。
  • 数据类型比较: 在比较变量的值时,务必注意数据类型。 如果属性是布尔类型,应该使用布尔值进行比较,而不是字符串。
  • 变量作用域: 使用 let 关键字声明循环内部的变量,以避免变量作用域问题。
  • 错误处理: 实际应用中,应该添加适当的错误处理机制,例如检查res.data.users是否存在,以及isRetail属性是否存在。

总结:

通过本教程,您学习了如何在Postman中遍历JSON响应,并根据条件设置全局变量。 掌握这些技巧可以帮助您更有效地使用Postman进行API测试和自动化。 记住避免数组越界错误,正确比较数据类型,并注意变量作用域。 通过添加适当的错误处理机制,可以使您的测试脚本更加健壮。

以上就是Postman教程:遍历JSON响应并根据条件设置全局变量的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号