You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postman的Tests中从嵌套数组提取值设置环境变量?

解决Postman嵌套数组响应中提取PresentationId到环境变量的问题

问题分析

你的响应结构是外层为数组,数组的第一个元素里包含Item对象,之前的代码都没正确定位到这个层级,导致取不到值。

错误代码分析

  • 代码1:错误地直接访问pm.response.json().Item[0],忽略了外层数组,应该先取数组第0项再访问Item
  • 代码2:同样没处理外层数组,Response是数组而非对象,不能直接Response.Item
  • 代码3:循环条件错误(Response.Item是对象不是数组,无法用来判断循环次数),判断逻辑找的是值为"0"的项,和预期不符,还使用了已废弃的postman.setEnvironmentalVariable方法,变量名大小写也不一致

正确代码实现

情况1:响应数组只有一个元素(匹配你的示例)

// 解析响应为JSON,先取数组第0项,再获取Item里的PresentationId
const presentationId = pm.response.json()[0].Item.PresentationId;
// 设置环境变量
pm.environment.set('presentation_id', presentationId);

情况2:响应数组有多个元素,需要提取所有/特定PresentationId

如果后续可能返回多个元素,可通过循环遍历数组,提取目标值:

const responseData = pm.response.json();
// 遍历数组中的每个元素
responseData.forEach(itemObj => {
    const currentId = itemObj.Item.PresentationId;
    // 如果需要筛选特定值,可添加判断条件
    // if (currentId === 686183320) {
        pm.environment.set('presentation_id', currentId);
    // }
});

验证方法

设置完成后,可在Tests标签末尾添加日志,确认值是否正确获取:

console.log('提取的PresentationId:', pm.environment.get('presentation_id'));

打开Postman的控制台(左下角Console按钮),查看输出是否为预期的686183320。

内容的提问来源于stack exchange,提问作者Daniel Gasser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:13:18