Long类型返回前端,前端接收精度丢失bug

在写后端的时候,发现后端传过去前端的时候,后端的数据是对的,前端接收的时候,数据对不上,并且还有重复的数据存在,问题如下
在这里插入图片描述
后端的代码是返回一个分页数据,其中出问题的是id,这里的在后端中id是Long类型
数据库的这个id是bigInt类型,此时这样返回给到前端是如下结果
在这里插入图片描述
结果竟然是全都精度丢失了,变成了一样的
然而数据中,是这样的
在这里插入图片描述

出现的原因我这里不是特别明白,日后明白了这里我再补上,我看了别人写的,是因为,前端接收的类型只有number类型,他只有16位,而我们java的long类型是19位,那么就会精度丢失,这很正常,解决办法也很简单粗暴,我们只要换成string类型就ok了,但是这个解决方法有很多中解决方法,再一下做一个记录

第一种解决方法:

写配置,我们在webconfig中,配置一个消息转换器,每次有long类型的数据,就转成string,这样挺方便,就是前端接收的时候,要知道

/**
 * 配置类,注册web层相关组件
 */
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
   



    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
   
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = jsonConverter.getObjectMapper();
        //序列换成json时,将所有的long变成string
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);

        //加上转换器
        converters.add(jsonConverter);
    }
}

第二种,方法,注解法

写一个注解,这样效率不高,但是能解决,就是每次都要在实体类上写,麻烦的很,我不乐意干这个,但是也记录下来

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

这样也是没有问题的

我认为第一种解决方法,不错了,但是还是有些别扭,Long转换成string,总是不得劲,有强迫症,以后有更好的方案,就贴在这来

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 08:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 08:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 08:06:03       82 阅读
  4. Python语言-面向对象

    2024-01-26 08:06:03       91 阅读

热门阅读

  1. 常见 BUG 问题面试系列-01

    2024-01-26 08:06:03       30 阅读
  2. 安全产品与等级保护:匹配与选择指南

    2024-01-26 08:06:03       49 阅读
  3. LeetCode_13_简单_罗马数字转整数

    2024-01-26 08:06:03       59 阅读
  4. 请求封装(axios、fetch)

    2024-01-26 08:06:03       59 阅读
  5. 前后台分离跨域交互

    2024-01-26 08:06:03       47 阅读
  6. Vue3中el-table表格数据不显示

    2024-01-26 08:06:03       46 阅读