解决Sprngboot web前端展示Long数据精度丢失问题
问题场景
当数据库中的Long字段值过大,并展示在前端时,有可能会出现精度丢失。
例如某某表的主键是bigint(20),且值为”49572448361881608623“,通过springboot controller返回到前端展示时,值变为”49572448361881609000“。
解决方案
以JPA / hibernate映射的对象为例,在set方法上加上JsonSerialize注解,将Long转换为String类型
@JsonSerialize(using = ToStringSerializer.class) public void setId(Long id) { this.id = id; }
上述注解需要jackson core,databind和annotations依赖包,需在Pom文件中添加以下代码
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.8</version> </dependency>