如何从Postman响应体中批量提取productId并动态设置collection变量
问题原因
你代码中直接写了固定字符串"orderProductId[i]",JavaScript不会自动将字符串内的i替换为循环的索引值,因此所有循环操作都在修改同一个名称的变量,无法生成按序号递增的变量名。
正确实现代码
// 解析接口返回的JSON数据 const jsonData = pm.response.json(); // 遍历items数组 for (let i = 0; i < jsonData.items.length; i++) { // 动态生成变量名,序号从1开始匹配你的命名规则 const variableName = `orderProductId${i + 1}`; // 写入集合变量 pm.collectionVariables.set(variableName, jsonData.items[i].productId); }
如果你使用的环境不支持ES6模板字符串,也可以用字符串拼接的方式生成变量名:
const variableName = "orderProductId" + (i + 1);
可选优化:自动清理旧变量
多次运行接口时,旧的同规则集合变量不会自动删除,你可以在循环前添加以下代码,先清空所有orderProductId开头的历史变量,避免残留无效数据:
pm.collectionVariables.values.each(varItem => { if (varItem.key.startsWith('orderProductId')) { pm.collectionVariables.unset(varItem.key); } })
内容的提问来源于stack exchange,提问作者Lieschen
相关产品推荐
相关产品推荐

