JSON 格式化后 ID 变了?先检查大整数精度
如果格式化后订单 ID 的末位变了,先不要继续复制结果。保留原响应,检查 ID 是否被写成了 JSON 数字。
复现问题
在 JSON 格式化工具中输入 {"id":9007199254740993} 并格式化。当前工具使用普通 JavaScript 数字解析,输出会变成 9007199254740992。这是解析时精度损失,不是缩进的问题。
先找到变化发生在哪一步
- 在网络响应的原始文本中查看 ID,不要只看已经解析的对象。
- 将原始文本与格式化结果对比。如果原始文本已不正确,应向数据提供方排查。
- 如果只有解析结果变化,应检查解析器和字段类型。
如何修正
对于不参与算术的标识符,让数据提供方输出 {"id":"9007199254740993"}。不要在精度已经丢失后才转成字符串,那样无法恢复原值。确实需要大整数计算时,选择明确支持该精度的解析和计算方案。
校验通过仍要检查什么?
“合法 JSON”只代表语法通过,不保证数值无损,也不验证业务字段。对订单 ID、金额和时间戳,使用已知样本核对。结构对比工具也依赖解析,不应作为超大数字无损的证明。