首页 > 解决方案 > 邮递员从 JSON 中获取值,其中等于使用 javascript 的数组中的值

问题描述

目前使用 Postman 最新版本:6.7.4 (Latest)

我正在尝试从 JSON 响应正文中获取一个值并将其存储在环境变量中,但值“用户名”应该等于我的首选用户名。

通常我会提取这样的值:

var jsonData = pm.response.json();
pm.environment.set("useridToken", jsonData.Customers[0].userid);

这会给我列表中的第一项,但我希望从列表中获取第一项或第二项。例如,我希望获得userid where username EQUAL "Billy"。

身体反应的输出:

{
"Customers": [
    {
        "id": 24,
        "userid": 73063,
        "username": "BOB",
        "firstname": "BOB",
        "lastname": "LASTNAME
    },
    {
        "id": 25,
        "userid": 73139,
        "username": "Billy",
        "firstname": "Billy",
        "lastname": "lasty"
    }
   ]
}

有小费吗?

我记得在 SoapUI 中是这样的:

$.channels[?(@.is_archived=='false')].id[0]

我想在 Postman 的 JS 中不可能做到这一点?

标签: javascriptarraysjsonpostman

解决方案


您可以使用:Array.prototype.find()

const data = {
  "Customers": [{
      "id": 24,
      "userid": 73063,
      "username": "BOB",
      "firstname": "BOB",
      "lastname": "LASTNAME"
    },
    {
      "id": 25,
      "userid": 73139,
      "username": "Billy",
      "firstname": "Billy",
      "lastname": "lasty"
    }
  ]
}

const user = data.Customers.find(u => u.username === 'Billy')
const userid = user ? user.userid : 'not found'

console.log(user)
console.log(userid)


推荐阅读