解决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>

 

posted on 2019-01-15 08:30  wanbao  阅读(550)  评论(0编辑  收藏  举报