Javascript Postman:如何评估json数组

Javascript Postman:如何评估json数组,javascript,json,postman,Javascript,Json,Postman,使用Postman,可以将响应主体中的特殊字段保存到变量中,并在连续调用中使用此变量的值 例如: 在我对webservice的第一次调用中,以下内容在响应体中返回 [ { "id" : "11111111-1111-1111-1111-111111111111", "username" : "user-1@example.com", }, { "id" : "22222222-2222-2222-2222-222222222222", "username" : "user-2@e

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

例如: 在我对webservice的第一次调用中,以下内容在响应体中返回

[ {
  "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向webservice发送一个连续的请求

http://example.com/users/{{user_0_id}}
邮递员评估
{user_0_id}
11111111-1111-1111-1111111-111111111111

这个很好用。但是现在我增加了我第一次通话的测试

postman.setGlobalVariable("users", JSON.parse(responseBody));
在对Web服务的第二个请求中,我调用URL

http://example.com/users/{{users[0].id}}
但是现在不能对
{users[0].id}
进行求值,它保持不变,不会被
11111111-1111-1111-1111-111111111111
替换


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

要在全局/环境变量中保存数组,必须使用JSON.stringify()将其保存。以下是一段摘录自:

环境和全局变量将始终存储为字符串。如果您要存储对象/数组,请确保在存储之前先将其JSON.stringify()化,在检索时再将其JSON.parse()化

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

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}}
在第二次调用的测试中,确保在末尾清除temp变量:

postman.clearGlobalVariable("temp");

这应该对你有好处。据我所知,目前不可能直接在URL中解析全局变量以访问特定条目(就像您尝试使用
{users[0].id}
).

语法似乎已更改,现在要设置全局变量,您应该使用:
pm.global.set
而不是
postman.setGlobalVariable
这是否回答了您的问题?