我正在使用MQTT将消息传输到服务器。我收到一个数字ID 2898871460539924579 的有效负载,但当它进入我的数据库时,它已变为 2898871460539924500 。
我已将问题追溯到JSON.parse()。我接受了MQTT传递的Buffer对象,然后使用dataBuffer.toString()
将其转换为字符串。这显示了正确的ID( 2898871460539924579 )。当我运行JSON.parse(dataBuffer.toString())
时,该号码将更改为 2898871460539924500 。
如果你并排看两个数字,你会发现它们几乎完全相同,但最后两位数字是:
289 887 146 053 992 45 79
289 887 146 053 992 45 00
对于传递到系统的所有数字ID(此大小),这是相同的。有没有办法让JSON.parse()
正确解析这些数字?
修改
This post about large integers in javascript似乎与此问题非常相关。