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

Postman请求JSON体能否使用数值型环境变量?

解决Postman数值变量被编码为字符串的问题

你遇到的这个问题我之前也碰过——Postman的自定义环境变量默认都会被存成字符串类型,哪怕你存的是数字,用{{$lat}}插入到JSON请求体时,它会自动给变量值套上引号,导致后端服务把它当成字符串拒绝。而内置的$timestamp之所以正常,是因为它是Postman原生的动态变量,返回的就是纯数字,所以不会加引号。

这里有几个实用的解决办法:

方法一:在请求体里直接用表达式转成数字

Postman允许在双大括号的变量语法里写简单的JavaScript表达式,你可以直接把变量转成浮点数,这样生成的JSON里lat就是纯数字:

{ 
  "unixTimeStamp": {{$timestamp}},
  "lng": 145.123,
  "lat": {{parseFloat(pm.environment.get('lat'))}}
}

这样Postman会自动执行这个表达式,把环境变量里的lat字符串转成数字,发送的请求体里lat就不会带引号了。

方法二:预请求脚本直接替换请求体占位符

如果不想在请求体里写表达式,你可以先在请求体里放个占位符,再用预请求脚本替换成计算后的数值:

  1. 先把请求体改成这样:
{ 
  "unixTimeStamp": {{$timestamp}},
  "lng": 145.123,
  "lat": "__LAT_PLACEHOLDER__"
}
  1. 然后修改预请求脚本:
// 读取并计算lat值
var lat = parseFloat(pm.environment.get('lat')) + 0.001;
lat = lat.toPrecision(5);
pm.environment.set('lat', lat);

// 替换请求体里的占位符
var rawBody = pm.request.body.raw;
var updatedBody = rawBody.replace('__LAT_PLACEHOLDER__', lat);
pm.request.body.update({raw: updatedBody});

这样发送请求时,占位符会被替换成纯数字,JSON里的lat就是数值类型。

验证方法

改完之后,可以点击Postman的「Preview」标签,看生成的请求体里lat字段是不是不带引号的数字,确认没问题再发送请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:42:59