js处理雪花算法ID在前端丢失精度溢出的问题

建议直接在请求返回的钩子中去对json字符串进行统一处理

这里处理了多种情况。比如数字字符串等

这里统一将数字转换为字符串使用

具体代码如下:

var json_string = `{"price":3.099999998949999,"location":"31.1456,121.45798","id":15423456456465,"id":1,"id2":1.1,"id3":"123456789","id4":-100,"ids":[1,2222,3333],"ids2":[6666,888,999],"ids3":["123.457",13545,25.5]}`;

//第一种情况处理正则
const reg1=/(\-*\d+(?:\.\d+)?),/gi
//第二种情况处理正则
const reg2=/(\-*\d+(?:\.\d+)?)\}/gi
//第三种情况处理正则
const reg3=/(\-*\d+(?:\.\d+)?)\]/gi
//修正错误的替换结果
const reg4=/""(\-*\d+(?:\.\d+)?)"/gi

// var dataArr=json_string.match(reg1); //测试输出匹配结果
// console.log(dataArr)
var json_string=json_string.replace(reg1,`"$1",`);
var json_string=json_string.replace(reg2,`"$1"}`);
var json_string=json_string.replace(reg3,`"$1"]`);
var json_string=json_string.replace(reg4,`"$1`);
console.log(json_string)
console.log(JSON.parse(json_string))

1.支持负数

2.支持小数

3.支持,结尾的数字处理

4.支持对象中的数字处理

5.支持数组中的数字处理

测试的字符串中包含了大部分情况,一般是足够用了。不会有太大问题

你可能感兴趣的:(前端,javascript,json)