javascript - postman :如何评估 json 数组

标签 javascript json postman

使用 Postman 可以将响应主体中的特殊字段保存到变量中,并在连续调用中使用该变量的值。

例如: 在我第一次调用 web 服务时,响应正文中返回以下内容

[ {
  "id" : "11111111-1111-1111-1111-111111111111",
  "username" : "user-1@example.com",
}, {
  "id" : "22222222-2222-2222-2222-222222222222",
  "username" : "user-2@example.com"
} ]

我添加了一个测试

postman.setGlobalVariable("user_0_id", JSON.parse(responseBody)[0].id);

现在我使用 URL 向网络服务发送一个连续的请求

http://example.com/users/{{user_0_id}}

Postman 将 {{user_0_id}} 计算为 11111111-1111-1111-1111-111111111111

这很好用。但是现在我添加到我的第一个电话的测试中

postman.setGlobalVariable("users", JSON.parse(responseBody));

在我对网络服务的第二次请求中,我调用了 URL

http://example.com/users/{{users[0].id}}

但现在 {{users[0].id}} 无法计算,它保持不变,没有被替换为 11111111-1111-1111-1111-111111111111.

我能做什么?调用的正确语法是什么?

最佳答案

要将数组保存在全局/环境变量中,您必须对其进行 JSON.stringify()。这是 Postman documentation about environments 的摘录:

Environment and global variables will always be stored as strings. If you're storing objects/arrays, be sure to JSON.stringify() them before storing, and JSON.parse() them while retrieving.

如果确实有必要保存整个响应,请在第一次调用的测试中执行类似的操作:

var jsonData = JSON.parse(responseBody);
// test jsonData here

postman.setGlobalVariable("users", JSON.stringify(jsonData));

要从全局变量中检索用户 ID 并在请求 URL 中使用它,您必须在第二次调用的预请求脚本中解析全局变量并将值添加到“临时变量”在 URL 中使用它:

postman.setGlobalVariable("temp", JSON.parse(postman.getEnvironmentVariable("users"))[0].id);

因此,第二个调用的 URL 将是:

http://example.com/users/{{temp}}

在第二次调用的测试中,确保在最后清除临时变量:

postman.clearGlobalVariable("temp");

这应该可以解决您的问题。据我所知,目前无法直接在 URL 中解析全局变量以访问特定条目(就像您尝试使用 {{users[0].id}} 所做的那样)。

关于javascript - postman :如何评估 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36005840/

相关文章:

javascript - Firefox中Onchange不改变就触发

来自 Entity Framework 表的javascript数组

javascript - 在没有网络的情况下编译 V8 等

php - 从远程服务器解析 JSON 数据

python - 如何将具有可变长度行的平面 json 文件转换为 csv 文件?

facebook - 我们可以使用 Postman 客户端访问 Facebook Api 吗

google-chrome-extension - 如何将 postman 历史记录从 Chrome 应用程序复制到 native 应用程序?

javascript - If Condition 比较两个字符串格式 HH :MM:SS

java - 如何解析具有直接值的数组,两次 json 编码

express - 使用 Postman 在 header 中发送 JWT token