前端
2024-05-17
2024-05-17
大自然的真实和单纯,常是重要艺术极点的基础。——恩格斯
代码如下:
1 | "token".split(".").slice(0,2).map(i=>JSON.parse(atob(i))) |
这里主要是 JSON.parse
导致的,我简单复现一下
1 | JSON.parse('{"id":9052710354240385291}') |
得到的是
1 | {id: 9052710354240385000} |
可以看到后面的 291
变为 000
了
解决方式这里使用正则匹配 /:\s*([-+]?\d+(\.\d+)?([eE][-+]?\d+)?)/g
例如:
1 | JSON.parse('{"id":9052710354240385291}'.replace(/:\s*([-+]?\d+(\.\d+)?([eE][-+]?\d+)?)/g, (match, p1) => { |
得到
1 | {id: '9052710354240385291'} |
这里注意,我们只对超长数字进行了处理
1 | JSON.parse('{"id":9052710354240385291,"age":23}'.replace(/:\s*([-+]?\d+(\.\d+)?([eE][-+]?\d+)?)/g, (match, p1) => { |
得到的是:
1 | {id: '9052710354240385291', age: 23} |