Dec*_*her 8 javascript arrays json postman
目前使用的Postman最新版本:6.7.4(最新)
我正在尝试从 JSON 响应正文中获取一个值并将其存储在环境变量中,但值 'username' 应等于我的首选用户名。
通常我会提取这样的值:
var jsonData = pm.response.json();
pm.environment.set("useridToken", jsonData.Customers[0].userid);
Run Code Online (Sandbox Code Playgroud)
这会给我列表中的第一项,但我不希望从列表中获得第一项或第二项。例如,我希望获得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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
有小费吗?
我记得在 SoapUI 中是这样的:
$.channels[?(@.is_archived=='false')].id[0]
Run Code Online (Sandbox Code Playgroud)
我想在 Postman 的 JS 中不可能做到这一点?
Yos*_*ero 10
您可以使用: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);
Run Code Online (Sandbox Code Playgroud)