前端Number类型数据值过大导致精度问题丢失问题
在开发中,后端返回是一个JSON字符串,其中自动生成的id为Number类型,当我进行JSON.parse进行对象转换时,id的精度丢失了,后几位变为了0
let str = '{"subjectId":1598203100220235777}'
console.log(JSON.parse(str))
// 结果 {"subjectId":1598203100220235800}
解决方案
- 可让后端将JSON中的id转为字符串返回
- 前端自行转换为字符串
let str = '{"subjectId":1598203100220235777}' str = str.replace(/:s*([0-9]{15,})s*(,?)/g, ': "$1" $2') console.log(JSON.parse(str)) // 结果 {"subjectId":"1598203100220235777"}