【发布时间】:2021-04-15 03:20:51
【问题描述】:
我有一个看起来像这样的响应正文
{
"data_sets":[
{
"author": {
"name": "foo"
},
"category": "zip",
"client": true,
"data_type": "zip",
"index": "completed",
"id": 200,
"params": {}
},
{
"author": {
"name": "foo2"
},
"category": "zip",
"client": true,
"data_type": "zip",
"index": "completed",
"id": 190,
"params": {}
}]}
我试图在我的邮递员测试中迭代我的数千个数据集,并且只是简单地 console.log 等于我的环境变量中的 id 的 id。对于这种情况,假设是 190。我正在尝试这样的事情,但它不起作用。它没有失败,但没有给我预期的输出。
这是我在邮递员中的代码
pm.test("the response has the right id", () => {
id_dataset = pm.environment.get("id");
var jsonData = pm.response.json();
for(var i = 0; i < jsonData.data_sets.length; i++)
if(jsonData.data_sets[i].id == id_dataset)
console.log(jsonData.data_sets[i].id);
});
有人可以帮忙吗?
【问题讨论】:
-
i < jsonData.data_sets.length(注意也可以用const data_set = jsonData.data_sets.find(item => item.id === id_dataset);替换循环) -
(另外说明:服务器响应是 JSON 格式的文本。
pm.response.json();解析该 JSON 文本,生成一个对象。该对象又包含.data_sets,它是一个数组. 没有“JSON 数组”或“JSON 对象”之类的东西。) -
JSON 无效。它缺少一些逗号,第二个元素缺少
}。 -
@Shultz 请使用数组方法
find()检查我的解决方案,并告诉我这是否适合您。 -
我在我的解决方案中添加了可选链接
?.id,以防止在 ID 不存在时引发错误。
标签: javascript arrays json postman postman-pre-request-script