long类型前端丢失精度问题

long类型前端丢失精度问题

背景

long 类型传到前端后,会因为丢失精度,自动转00;比如雪花id

原因:

Java中Long的取值范围为-9223372036854775808到9223372036854775807(即-2^64“ 到”2^64-1)

JavaScript中的Number取值范围为-9007199254740992 到9007199254740991 (即-2^53 到2^53-1)

解决方法:

  1. 查看序列方式

  2. 根据序列化的方式,选择不同的注解

    fastjson:@JSONField(serializeUsing = ToStringSerializer.class)

    jackson:@JsonFormat(shape = JsonFormat.Shape.STRING)

@JSONField(serializeUsing = ToStringSerializer.class) 不生效

原因:

SpringBoot2.0.5版本中使用的默认序列化方式为jackson,而不是fastjson

解决方法:

jackson:@JsonFormat(shape = JsonFormat.Shape.STRING)

排查过程:

  1. 查看 pom 中 spring-boot-starter-web ,不断点进去,发现使用的是 spring-boot-starter-json
  2. 再点进去,发现引用的是 jackson,所以用 jackson 的注解
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值