JSON 与数据结构

JSON 大整数为什么会丢失精度?

了解 JavaScript 安全整数范围,以及 API 数据在解析和重新序列化时如何避免静默改变。

问题从哪里开始

JSON 语法允许数字,但 JavaScript 的 Number 使用双精度浮点数表示。超过 Number.MAX_SAFE_INTEGER 的整数在进入 JSON.parse 后可能已经无法区分相邻数值,随后 JSON.stringify 只会把错误的结果重新写出。这个问题常见于订单号、雪花 ID、数据库主键和金额的最小单位。

如何验证

使用 9007199254740992 和 9007199254740993 做对比,观察解析后的值是否相同。不要只检查页面上显示的文本;应比较解析前后的字节或字符串,并在目标语言中使用 bigint、decimal 或字符串保存标识符。

JSONLane 的处理边界

JSONLane 的格式化、压缩和结构转换工具会拒绝超出 JavaScript 安全整数范围的数字,而不是悄悄输出可能错误的结果。需要保留这类 ID 时,把它们作为字符串传输,并在接口 Schema 中明确类型。

相关工具

参考来源

最后更新: 2026-08-23