后端Long型数据传给前端精度丢失问题 分布式id 解决方案

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更加方便。

如果觉得我的经验对你有帮助,不妨点个赞再走吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值