前两天对接接口,后端甩过来一个十九位的订单号。我美滋滋 JSON.parse 一把,转完存库,第二天运营来问为啥查不到单子。
排查半天才发现,那个订单号进了 JS 就被当成 Number 处理,精度直接砍到 2^53 开外,末几位全变 0。卧槽说真的,JSON 对大整数压根没原生支持,parse 的时候它不会跟你商量,直接给你四舍五入成一个近似值,连个 warning 都不打,离谱。
后来老老实实用 string 接、string 存,要么上 json-bigint 这种库。btw 现在想想,早点被这坑咬一口,也不至于半夜对着数据库怀疑人生。笑死
你们有没有被哪种“看起来人畜无害”的类型暗算过?