POSTMAN-从JSON响应中保存属性值

时间:2018-09-19 12:23:46

标签: json postman

我是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
      }
   ]
}

2 个答案:

答案 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);
    }   

}