Long型数据id传给前端精度丢失问题 数据库数据类型bigint
今天将文章类ArticleVo
的数据传给前端时,发现前端接收的数据id
不一样。
如前端获得的id=1405916999732707300
,但数据库里是id=1405916999732707330
,后面两位数据不一样。
@Data
public class ArticleVo {
private Long id; //数据库对应属性bigint
private String title;
private String content;
}
return Result.success(articleVo); //返回前端
原来是分布式id
比较长,传到前端解析不完全 会有精度损失,必须转为string
类型 进行传输,就不会有问题。
解决方案
有以下两种方案:
方案1:将实体类中Long型数据序列化为字符串
@Data
public class ArticleVo {
//使用JSON序列化成 字符串
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
private String title;
private String content;
}
方案2:返回Map数据,将属性设为字符串
Map<String, String> map = new HashMap<>();
map.put("id",article.getId().toString());
map.put("title",article.getTitle());
map.put("content",article.getContent());
return Result.success(map);
这样传给前端就不会丢失精度了,推荐方案1更加方便。
如果觉得我的经验对你有帮助,不妨点个赞再走吧!