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

标签 json postman

我是 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/

相关文章:

javascript - postman 表单数据有效,但原始等效项无效

json - 在使用 MongoDB 将文档分配给 Go 中的结构之前如何转换文档?

json - Swift 和访问嵌套的 JSON 集合

json - 如何解码包含数组 Swift 4 的 JSON 文件?

javascript - AJAX:无效的 JSON 响应

node.js - postman 未到达 AWS EKS API 终端 Node

ios - postman 请求到 Alamofire 请求

api - 当我将 Swagger API 导入 Postman 时,Postman GUI 中的所有请求名称都为空白

c# - HTTP 请求在 Postman 中有效,但在 C# 代码中无效

android - 将 JSON 改造为 POJO