json-bigint处理大数字问题

js里面的整数有安全范围,即最大能显示的范围,超过了这个范围可能会精度丢失

Number.MAX_SAFE_INTEGER  //值为9007199254740991

json-bigint:可以像JSON.parse一样方便转换(json-bigint 是一个第三方包,它可以帮我们很好的处理这个问题。)

 1 //导入
 2 import JSONbig from 'json-bigint'
 3 
 4 //可以通过axios的transformResponse方法,这个方法的作用是在传递给then/catch前,允许修改响应数据
 5 
 6 //axios在这里默认把响应体从json字符串转成了js对象
 7 axios.defaults.transformResponse = [function (data) {
 8 
 9 
10     try {
11     //作用1:把json字符串转为js对象
12     //作用2:把里面的大数字做安全处理
13      return JSONbig.parse(data)
14     }catch(){
15     return data;
16     }
17     //return data;
18 }]
19 
20 //如果不写这个方法,返回的数据是自动就转为json对象的了,如果写了,就要自己转为对象,即return JSON.parse(data)

只要经过json-bigint转换后的id,直接toString(),就能得到真实的id


json-bigint 会把超出 JS 安全整数范围的数字转为一个 BigNumber 类型的对象,对象数据是它内部的一个算法处理之后的,我们要做的就是在使用的时候转为字符串来使用。

上一篇:24.ES11


下一篇:大数的快速幂取模JavaScript实现