我是 JSON 和 Postman 的新手(截至昨天)。
我正在尝试做一些非常简单的事情,我创建了一个 GET 请求,该请求在 JSON 响应中提取表单列表。我想获取此响应并获取第一个“id” token 并将其放在一个变量中。
我正在使用一个全局变量,但如果可能的话我想使用一个集合变量。无论哪种方式,这就是我正在做的事情。
我尝试过很多东西,最近的这个:
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
}
]
}
最佳答案
这将获得第一个 id
:
pm.globals.set('firstId', _.first(pm.response.json().forms).id)
它每次都会在数组中排在第一个,因此它会在响应发生变化时设置一个不同的变量。
您创建的 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]
引用数组中第一个对象中的第一个 id。例如 [1]
会得到第二个,依此类推。
您目前无法使用 pm.*
API 设置集合级变量 - 这些只能手动添加并使用 pm.variables.get('var_name')
语法。
编辑:
在新版本的桌面应用程序中,您可以使用 pm.collectionVariables.set()
在 Collection 级别设置变量。
关于json - POSTMAN - 从 JSON 响应中保存属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52405813/