一个后台转过来的集合,因为id是long类型,json.parse会丢失精确度,如何用正则把所有关于id的值,都改成字符串类型
###const result = '[{"id":1234567890},{"id":1234567891}]'.replace(/(?<="id"\s*:\s*)(\d+)/g, '"$1"');
// "[{"id":"1234567890"},{"id":"1234567891"}]"
console.log(result);
###最简单的方式让后台序列化成 String。
否则只能 JS 手写 JSON Parser,这有个别人写好的库:zaach/jison: Bison in JavaScript. (github.com)。
但如果你用的是原生的 fetch
或是 jQuery
、axios
提供的响应反序列化器,还是不行,因它们都是依赖 JSON.parse
的,所以你 AJAX 库也得自己手动改造一下。
此外,这还仅仅只解决了第一步反序列化精度丢失的问题,如果你还要在前端做加减乘除一类的运算,那么还得祭出 BigInt。