【发布时间】:2019-11-09 03:19:56
【问题描述】:
我正在尝试计算一个 json 数组的值。
如果“beta = b”,我想计算“sierra”数据数组中id的数量。因此,根据设置为值 'b' 的环境变量 ("B") 检查 data[].beta 的值。
这里的问题是我在 data[] 的每次迭代中都没有“sierra”。
{
"data": [{
"alpha": "a",
"beta": "b",
"delta": {
"cat": "dog"
},
"gamma": {
"sierra": {
"data": [
{
"type": "alphabet",
"id": "a"
},
{
"type": "alphabet",
"id": "b"
}
]
}
}
},
{
"alpha": "a",
"beta": "b",
"delta": {
"cat": "dog"
},
"bravo": {
"data": [
{
"type": "number",
"id": "1"
},
{
"type": "number",
"id": "2"
}
]
}
}
},
{
"alpha": "x",
"beta": "y",
"delta": {
"cat": "dog"
},
"gamma": {
"sierra": {
"data": [
{
"type": "alphabet",
"id": "c"
},
{
"type": "alphabet",
"id": "d"
}
]
}
}
}]
}
json 上面是我在 postman 中看到的响应体。 “循环”是我的“for”循环的计数。
编辑 1: 我试过这个:
1. pm.response.json().data[loop].gamma.sierra.data().id).size()
2. for(var loop =0; loop < pm.response.json().data.length; loop++)
{
if(pm.response.json().data[loop].beta===pm.variables.get("B"))
{
pm.response.json().data.map((item, loop) => {
if(item.gamma){ // check if gamma key is present
console.log(item.gamma.sierra.filter(data =>data.id
).length); //
}
});
result=true;
break;
}
}
pm.expect(true).to.eql(result);
预计:2
Actual: TypeError: Cannot read property 'sierra' of undefined
Actual: item.relationships.apps.filter is not a function
【问题讨论】:
-
代码中的
loop是什么? -
可以通过pm.response.json().data[loop].gamma.sierra.data().length找到
-
先尝试登录
pm.response.json().data[loop]。data[loop]中的一个或几个似乎缺少gamma键。 -
@MihaiAlexandru-Ionut 我猜他正在运行一个循环,
loop是索引号。 -
您试图调用一个不存在的函数:.sierra.data()。在您的 casa 中,数据只是一个数组。
标签: javascript arrays json postman postman-testcase