JSON.parse解析大整数踩坑

项目返回的id是long类型,比较大,简洁一下前端的代码如下

javascript 复制代码
let jsonStr = `{
      "id": 1921823983347568644,
      "uid": 1921823983347568344
}`;
console.log(JSON.parse(jsonStr));

输出结果:

可以看到id的最后两位变成了00,uid的最后三位变成了400,原因是js序列化整数为Number的时候数据超出了Number的范围,导致出现了不可预测的结果

JS的数字只有在[-(Math.pow(2,53)-1), Math.pow(2,53)-1]内的数字才是符合规范

最好的解决方案是后端将大整数返回类型改为String

相关推荐
SomeOtherTime4 小时前
Rust所有权(AI回答)
开发语言·后端·rust
Easyhood5 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
白杨尚青5 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
1-1=07 小时前
Vue 3 模板语
前端·javascript·vue.js
风卿8 小时前
看着AI写代码太孤独了,来欣赏星云吧:一个DSH 装饰插件
前端·javascript
牧艺8 小时前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
愚坤9 小时前
前端真有意思,JS还能独立做项目?
前端·javascript·github
饮水桶_T9 小时前
JAVA IO流笔记
开发语言·数据结构·算法
李纲明11 小时前
微信小程序 getSystemInfo 提示已废弃、屏幕高度算错胶囊还对不齐?getWindowInfo 和 getDeviceInfo 怎么接才稳
javascript·微信小程序·小程序·小程序开发·devdiy
Felven11 小时前
C. Brr Brrr Patapim
c语言·开发语言