如何处理前后端交互中雪花ID的精度问题呢?
下文笔者讲述前后端交互时,ID出现精度丢失的处理方法分享,如下所示
问题说明
工作中使用雪花ID 该ID在后端中为Long类型 在前端中为number类型 由于Long和number的精度不一样 所以会导致数据精度丢失 如下: 后端数据:12498901275683313 前端数据:12498901275683310出现这种异常,则会导致前后端数据不一致,会导致莫名其妙的错误
处理雪花ID不一致的情况 修复方法1: 在后端将Long类型转成String再传给前端。 @JsonSerialize(using= ToStringSerializer.class) private Long id; 修复方法2: 后端使用注解解决前后端交互Long类型精度丢失的问题 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @Configuration public class JacksonConfig { @Bean public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); return objectMapper; } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。