添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首发于 WeCode365

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