浏览器响应数据long型超长自动转换精度丢失-JavaScript 整数精度丢失问题-springboot解决Long类型数据传入前端损失精度
程序员文章站
2022-07-15 13:00:03
...
最近在洗敏感数据id,用类似snowflake算法加入分表基因生成新的ID,返回给前端,前端整数显示不正常。
java中long的最大值:9223372036854775807
看看在浏览器中的显示:
Google Chrome
版本 79.0.3945.117(正式版本) (64 位)
后面好几位不一样了,看看JavaScript中整数的最大值:
看来JavaScript的整数要比java的小。
如何解决:
前端可以做,后端序列化生字符串就行;
比如spring boot应用统一解决:
/**
* @author sdcuike
* @DATE 2020/1/17
*/
@Configuration
public class Jackson2Customizer {
public static final String DATE_FORMAT = "yyyy-MM-dd";
public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> {
//修复:前端js 精度问题
jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);
jacksonObjectMapperBuilder.simpleDateFormat(DATE_TIME_FORMAT);
};
}
}
或者使用注解在属性上加:
@JsonSerialize(using = ToStringSerializer.class)
上一篇: docker——容器内 [安装vim]
下一篇: Docker容器内安装vim