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

Postman变量中如何存储、读取并正确使用JavaScript Map数据

问题原因

Postman 所有变量(集合变量、环境变量、全局变量)仅支持存储字符串类型的值,直接将 JavaScript 原生 Map 实例存入变量时,会被强制转换为字符串 [object Map],读取时拿到的是普通字符串,无法调用 Map 的原生方法。
另外你贴的失败代码里还存在变量名笔误:读取变量时赋值给了 map,后续调用 .set() 方法时却使用了未定义的 typeAttrId,也会直接触发运行错误。

正确操作步骤

Map 是结构化对象,无法直接序列化存储,需要在存储时转成可序列化的格式,读取时再还原为 Map 实例。

1. 第一个测试用例:存储Map

存储前先将 Map 转为 entries 键值对数组,再序列化后存入变量:

let map = new Map();
map.set('first', 'value1');
// 转成键值对数组后序列化存储
pm.collectionVariables.set('map', JSON.stringify(Array.from(map.entries())));

2. 第二个测试用例:读取还原Map

读取存储的字符串后反序列化,传入 Map 构造函数即可得到可用的原生Map实例:

// 读取值并反序列化,还原为Map实例
const storedEntries = JSON.parse(pm.collectionVariables.get("map"));
const map = new Map(storedEntries);

// 验证原有数据
console.log(map.get('first')); // 输出: value1
// 正常调用Map方法操作数据
map.set('second', 'value2');
console.log(map.get('second')); // 输出: value2

// 如果修改后需要持久化更新,重新序列化存储即可
pm.collectionVariables.set('map', JSON.stringify(Array.from(map.entries())));
注意事项
  • 禁止直接对Map实例执行JSON.stringify(map),该操作会返回空对象{},丢失所有存储的键值对,必须先通过Array.from(map.entries())转为数组结构再序列化
  • 跨用例传递其他复杂类型(Set、自定义对象、嵌套数组等)都遵循相同逻辑:存储前序列化为JSON字符串,读取后反序列化为对应结构使用
  • 变量读写时注意名称一致,避免出现定义变量名和后续调用变量名不匹配的低级错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:33:33