后端传递Long类型,到前端数据不对问题解决

1、问题

开发前后端分离项目时,后端传递的    2022122709462977073long类型数据如2022122709462977073    2022122709462977073 ,传递到前端后,数据变成了2022122709462977000。

2、原因

经过查找发现问题出现在前端解析long类型数据时,前端JS中, js在对长度较长的长整型数据进行处理时, 会损失精度。

前端中js的Number类型最大值为9007199254740991(16位数),一旦超过这个值,就会发生精度缺失现象,

前端拿到的数据: 第16位会四舍五入, 17位后的数据自动用0代替)

js中Number类型最大值:9007199254740991(16位数)
java中Long类型最大值:9223372036854775807(19位数)

3、解决方法

将后端该字段转换为String类型传递给前端

private String id;

替换
private Long id;

这种方法经测试后是可以有效解决问题的

以下两种方法自测后,并没有解决问题:

spring.jackson.generator.write_numbers_as_strings = true

@JSONField(serializeUsing= ToStringSerializer.class)

你可能感兴趣的:(Springboot,前端)