问题描述

接口查询数据返回,有一个Long类型字段,postman返回与数据库一致(= 63354019632316416),swagger返回不一致(= 63354019632316420),chrome查看返回数据也不一致(= 63354019632316420)。

原因

Java中Long类型可以表示的最大值是2 ^63-1,而JS的基础类型Number可以表示的最大值是 2 ^53。所以后端返回的数据大于Number能表示的最大值时无法正确解析,出现精度丢失的问题。

解决方案

1、将返回给前端的Long类型数据改为String;
2、在Long类型字段加上注解 @JsonSerialize(using = ToStringSerializer.class) 或者 @JsonFormat(shape = Shape.STRING)。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐