1. 情况描述:
我有一个接口只是简单的查询列表数据并返回给前端作一个表格展示。
接口返回的 userId 数据为:914081478893860687,但页面上解析到的值却是 914081478893860700。
确认接口返回无误,数据库数据无误。
最终发现 在前端展示页面 F12 中,不同窗口获取到的值也不同。
Response 窗口返回的是正确结果,和接口返回数据一致:
Preview 窗口中显示的数值同于页面列表中展示的数据,和接口返回的正确数据有误差,如下图红框中数值:
2. 原因: js 解析 json 数据时,对于 long 类型数据长度有限制。此时的 long 类型数据 userId 长度超限,jsp 中解析时出现精度丢失,导致数据值出现误差。
3. 解决: 修改返回数据 long 类型为 String 类型,作为字符处理。
如上图 黑色框中字段 :userIdStr ,正常解析了该数据值。