我是JSON和Postman的新手(截至昨天)。
我正在尝试做一个非常简单的事情,我创建了一个GET请求,该请求在JSON响应中提取表单列表。我想获取此响应并获取第一个“ id”令牌并将其放在变量中。
我正在使用全局变量,但在可能的情况下希望使用集合变量。无论哪种方式,这就是我在做什么。
我已经尝试了几件事,最近一次是这样:
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("id", jsonData.args.id);
还有:
pm.test("GetId", function () {
var jsonData = pm.response.json();
pm.globals.set("id", jsonData.id);
});
响应代码如下:
{
"forms":[
{
"id":"3197239",
"created":"2018-09-18 11:37:39",
"db":"1",
"deleted":"0",
"folder":"151801",
"language":"en",
"name":"Contact Us",
"num_columns":"2",
"submissions":"0",
"submissions_unread":"0",
"updated":"2018-09-18 12:02:13",
"viewkey":"xxxxxx",
"views":"1",
"submissions_today":0,
"url":"https://xxx",
"data_url":"",
"summary_url":"",
"rss_url":"",
"encrypted":false,
"thumbnail_url":null,
"submit_button_title":"Submit Form",
"inactive":false,
"timezone":"US/Eastern",
"permissions":150
},
{
"id":"3197245",
"created":"2018-09-18 11:42:02",
"db":"1",
"deleted":"0",
"folder":"151801",
"language":"en",
"name":"Football Draft",
"num_columns":"1",
"submissions":"0",
"submissions_unread":"0",
"updated":"2018-09-18 12:11:54",
"viewkey":"xxxxxx",
"views":"1",
"submissions_today":0,
"url":"https://xxxxxxxxx",
"data_url":"",
"summary_url":"",
"rss_url":"",
"encrypted":false,
"thumbnail_url":null,
"submit_button_title":"Submit Form",
"inactive":false,
"timezone":"US/Eastern",
"permissions":150
}
]
}
答案 0 :(得分:3)
这将获得第一个test
:
forms
那将每次都获得数组中的第一个,因此它将设置一个不同的变量来改变响应。
您创建的pm.test("GetId", function () {
var jsonData = pm.response.json()
pm.expect(jsonData.forms[0].id).to.equal("3197239")
pm.globals.set("id", jsonData.forms[0].id)
})
几乎在那儿,但是引用需要深入到[0]
数组中:
[1]
pm.*
引用数组中第一个对象中的第一个ID。例如pm.variables.get('var_name')
将获得第二个,依此类推。
您目前无法使用-----BEGIN ENCRYPTED PRIVATE KEY-----
API设置集合级别变量-这些变量只能手动添加,并可以使用Proc-Type
语法进行引用。
答案 1 :(得分:0)
如果您想将id设置为全局变量,则基于名称或任何其他属性,便是这种方式。
for(var i=0; i<jsonData.forms.length; i++)
{
if (jsonData.forms[i].name==="Contact Us")
{
pm.environment.set("id", jsonData.forms[i].id);
}
}