Postman变量只支持字符串存储,保存对象需先JSON.stringify(),读取时必须JSON.parse(),否则会得到"[object Object]"或报错;引用{{var}}仅为字符串文本,无法直接作为JS对象使用。

Postman 本身不支持直接把 JavaScript 对象(比如 {id: 1, name: "Alice"})原样存进环境或全局变量——它底层只存字符串。想“保存对象再用”,必须手动序列化和反序列化,否则取出来就是 [object Object] 或 undefined。
pm.environment.set() 存对象前必须 JSON.stringify()
Postman 的变量存储机制是纯字符串键值对。即使你传入一个对象,pm.environment.set("user", {id: 1}) 实际存进去的是 "[object Object]",不是你想要的数据。
- 正确做法:先用
JSON.stringify()转成字符串再存 - 示例脚本(写在 Tests 标签里):
const jsonData = pm.response.json(); const userObj = jsonData.data.user; // 假设响应里有这个对象 pm.environment.set("saved_user", JSON.stringify(userObj)); - 错误写法:
pm.environment.set("saved_user", jsonData.data.user)→ 后续取出来无法解析
在请求中用 {{}} 引用时,对象不能直接展开
{{saved_user}} 只会插入一串 JSON 字符串(如 {"id":1,"name":"Alice"}),不能当 JS 对象直接用在 Headers 或 URL 参数里——它只是文本。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 如果要拼到 URL 查询参数中,得靠 Pre-request Script 手动解析并拼接:
const userStr = pm.environment.get("saved_user"); const user = JSON.parse(userStr); pm.variables.set("user_id", user.id); // 再单独提字段存新变量然后 URL 写成https://api.com/users?id={{user_id}} - 如果要放 Body(raw JSON),可直接用
{{saved_user}},但前提是 Body 类型是raw+application/json,且后端能接收完整对象 - Headers 中不能直接塞对象字符串;Authorization 等字段需要具体值,得提前拆好字段存变量
Tests 里取对象必须 JSON.parse(),否则 typeof 是 "string"
从变量里读出来的永远是字符串,哪怕你存的时候用了 JSON.stringify()。不 parse 就用,会报错或逻辑错乱。
- 取值并解析的典型写法:
const userStr = pm.environment.get("saved_user"); if (userStr) { const user = JSON.parse(userStr); console.log(user.id); // ✅ 正确 pm.test("ID is number", () => pm.expect(user.id).to.be.a("number")); } - 常见坑:
pm.environment.get("saved_user").id→ 报错,因为字符串没id属性 - 健壮写法建议加 try/catch,防止响应结构变动导致 parse 失败
最易被忽略的一点:变量名本身不区分类型,saved_user 和 user_id 在 Postman 看来都是字符串键;真正决定“能不能当对象用”的,只有你存之前有没有 stringify、用之前有没有 parse。少一步,整个关联链就断了。
















