Json数据解析的时候,数字字符串变成了科学计数法,怎么解决

jielei 2015-05-12 11:58:05
responseXMltop= httpGet(url&apiUrl, "POST", data)
Set obj = parseJSON(responseXMltop)
if responseXMltop<>"" then
for i=0 to obj.orderListResult.modelList.length-1
orderId=obj.orderListResult.modelList.get(i).id
response.write(orderId)
.................................................
.................................................


例如本来orderId 的值应该是1045776164615831 ,但是读取出来的却是1.04577616461583E+15



...全文
30192 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
邓盛余 2018-12-07
  • 打赏
  • 举报
回复
关于JSONObject 数字太大被转成科学计数法的问题我刚好遇到,这篇回答完美解决 https://blog.csdn.net/u013100581/article/details/70890584
野花一片 2018-10-19
  • 打赏
  • 举报
回复
9楼正解。。
aliang 2015-12-13
  • 打赏
  • 举报
回复 1
应该用这个更完美点,呵呵 <script language="Javascript" runat="server"> function fixNumber(v){ return isFinite(v)?String(Number(v)):v; } </script> response.write(fixNumber(orderId))
cnbjx 2015-12-12
  • 打赏
  • 举报
回复
引用 5 楼 jielei 的回复:
我直接 write(obj.orderListResult.modelList.get(i).id) 出来也是带科学计数法的
看到上面代码知道你JSON的解析方式了。在JScript 端处理转成字符形。 Array.prototype.get = function(i) { if ( typeof(this[i]) == "number"){ if (this[i] >= 1000000000000000 ) return this[i].toString(); } return this[i]; };
aliang 2015-12-10
  • 打赏
  • 举报
回复

<%=fixNumber(1.04577616461583E+15)%>
aliang 2015-12-10
  • 打赏
  • 举报
回复
我今天也遇到这个问题,我这样子用,你参考下

<script language="Javascript" runat="server">
function fixNumber(v){
	return isNaN(v)?v:String(Number(v));
}
</script>

asp代码
<%=fixNumber(1045776164615831)%>
Dogfish 2015-05-13
  • 打赏
  • 举报
回复
引用 14 楼 jielei 的回复:
难道replace函数会破坏json的结构完整性?
不会的。把json输出来检查一下。
jielei 2015-05-13
  • 打赏
  • 举报
回复
难道replace函数会破坏json的结构完整性?
jielei 2015-05-13
  • 打赏
  • 举报
回复
引用 11 楼 dogfish 的回复:
在前面加多一个空格。用的时候trim掉。
我尝试了用replace 函数在ID的值前后都加个双引号,但是发现json就解析不了了
Dogfish 2015-05-13
  • 打赏
  • 举报
回复
在前面加多一个空格。用的时候trim掉。
天际的海浪 2015-05-13
  • 打赏
  • 举报
回复
我估计那个id的值在后台是以"长整型数值" 类型存储的, 在生成json时就自然按数值类型处理. 前台js解析json时也会解析为数值类型, 但是js不支持长整型,就自然用浮点数存储了 只要在生成json之前.把id的值转换为字符串就可以了
jielei 2015-05-12
  • 打赏
  • 举报
回复 1
orderId 是订单编号,本来应该就是字符串类型的,但是JSON在解析的时候会自动用科学计数法表示,15位的不会有这个情况,16位的字符串就出现这个情况了
slwsss 2015-05-12
  • 打赏
  • 举报
回复
orderId用字符串形式的
KK3K2005 2015-05-12
  • 打赏
  • 举报
回复
引用 8 楼 jielei 的回复:
引用 7 楼 KK3K2005 的回复:
前面加一个 'a'
这个不是数据转换的问题,是json解析出来就是科学计数法了,并不是因为我赋值给orderId才变成这样的
扔个前段解析把 不要在后台parsejson了
天际的海浪 2015-05-12
  • 打赏
  • 举报
回复
这是那个json生成时就有问题, json生成时是id:1045776164615831 应该是id:"1045776164615831"
jielei 2015-05-12
  • 打赏
  • 举报
回复
引用 7 楼 KK3K2005 的回复:
前面加一个 'a'
这个不是数据转换的问题,是json解析出来就是科学计数法了,并不是因为我赋值给orderId才变成这样的
KK3K2005 2015-05-12
  • 打赏
  • 举报
回复
前面加一个 'a'
jielei 2015-05-12
  • 打赏
  • 举报
回复
跪求哪位能人帮我想想解决办法
jielei 2015-05-12
  • 打赏
  • 举报
回复
我直接 write(obj.orderListResult.modelList.get(i).id) 出来也是带科学计数法的
jielei 2015-05-12
  • 打赏
  • 举报
回复
我这里抓取的是阿里巴巴的订单编号!获取出来的值直接就是带科学计数法的了
加载更多回复(1)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧