JavaScript 之 JSON.parse 导致大数精度丢失问题的解决方案
JavaScript 精度的问题时不时就会出现在前端开发面前,这里讨论的是大数精度丢失的问题
问题复现
前端向服务端请求某个订单数据,其中订单号 18 位,在数据库中以数字的形式保存,服务端查询数据库后向前端返回如下数据:
{
code: 0,
message: 'success',
data: {
uid: 10001,
productId: 100003,
orderId: 179828993786548789
}
前端调用接口后,通过 http 传输的数据并不是 JSON,而是 JSON 字符串:
"{"code":0,"message":"success","data":{"uid":10001,"productId":100003,"orde
rId":179828993786548789}}"
由于在各大 HTTP 请求库的内部,实现了对
application/json
等各种类型返回数据的格式化,也就是调用
JSON.parse
来对请求过来的数据进行处理,因此,前端通过这些调用获取到的数据已经是被格式化了,得到了如下数据:
{
code: 0,
message: 'success',
data: {
uid: 10001,
productId: 100003,
orderId: 179828993786548800