如何在Postman的JSON请求体键名中使用变量?
嘿,这个问题我之前折腾过好一会儿!Postman默认确实不支持直接在JSON的键名位置用{{变量名}}的语法,但有两种非常实用的方法能搞定,我给你一步步说清楚:
方法一:用Pre-request Script动态生成请求体
这是最稳妥的方式,通过脚本构建请求体对象,把变量作为键名,再转成JSON字符串供请求使用:
先定义好所需变量:
不管是环境变量、集合变量还是全局变量,先把要用作键名的变量(比如actionName,值设为act.getEntries)和其他变量(authToken、activelistid)都配置好。编写Pre-request Script:
打开请求的「Pre-request Script」标签,写入以下代码:// 从变量中取值 const actionName = pm.variables.get("actionName"); const authToken = pm.variables.get("authToken"); const activelistid = pm.variables.get("activelistid"); // 构建包含动态键名的请求体对象 const requestBody = { [actionName]: { "act.authToken": authToken, "act.resourceId": activelistid } }; // 把对象转成JSON字符串,存入临时变量 pm.variables.set("dynamicRequestBody", JSON.stringify(requestBody));配置请求体:
切换到请求的「Body」标签,选择「Raw」格式,确保Content-Type设置为application/json,然后直接输入{{dynamicRequestBody}}即可。
方法二:直接在Raw请求体中使用模板语法(简化版)
如果你的场景比较简单,也可以直接在Raw请求体里写带变量的键名,但需要注意Postman的变量解析规则:
在Raw请求体中直接这样写:
{ "{{actionName}}": { "act.authToken": "{{authToken}}", "act.resourceId": "{{activelistid}}" } }
不过要注意,这种方法在某些Postman版本中可能需要确保「Settings」里的「Enable variable syntax in request body」选项是开启的。如果遇到解析失败的情况,优先用方法一更靠谱。
调试小技巧
写完之后可以打开Postman的「Console」(左下角),在脚本里加一句console.log(pm.variables.get("dynamicRequestBody")),看看生成的JSON字符串是否符合预期,方便快速排查问题。
内容的提问来源于stack exchange,提问作者Marius

