最近在洗敏感数据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)
————————————————
版权声明:本文为CSDN博主「Dreamer who」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/doctor_who2004/article/details/104026152