当前位置: 首页 > news >正文

【BUG】SpringBoot项目Long类型数据返回前端精度丢失问题

问题描述

后端再给前端返回数据,使用Long类型的时候存在精度丢失问题。

原因分析:

分布式项目中广泛使用雪花算法生成ID作为数据库表的主键,Long类型的雪花ID有19位,而前端接收Long类型用的是number类型,但是number类型的精度只有16位。这就导致雪花ID传到前端会出现精度丢失。


解决方案:

通过Jackson序列化转String

@Configuration
public class SerializerConfig {/*** Long类型前端精度丢失问题,序列化时转String* @param mapperBuilder* @return*/@Beanpublic ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder mapperBuilder) {ObjectMapper build = mapperBuilder.createXmlMapper(false).build();build.setSerializationInclusion(JsonInclude.Include.NON_NULL);SimpleModule module = new SimpleModule();module.addSerializer(Long.class, ToStringSerializer.instance);module.addSerializer(Long.TYPE, ToStringSerializer.instance);build.registerModule(module);return build;}
}

相关文章:

  • Android Studio Giraffe版本遇到的问题
  • Backend - Django makemigrations
  • es常用查询编辑
  • SpringBoot集成i18n(多语言)
  • 精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的
  • java使用xstream框架生成xml文件
  • 5.【自动驾驶与机器人中的SLAM技术】2D点云的scan matching算法 和 检测退化场景的思路
  • Unity中Shader编译目标渲染器
  • Java转Go学习之旅 | Go入门(2)
  • Java零基础-if条件语句
  • 雷军:我的程序人生路
  • JS的监听事件
  • 企业微信协议开发,API接口调用
  • 操作系统——进程同步
  • Linux chfn命令教程:如何更改和管理用户的finger信息(附案例详解和注意事项)
  • $translatePartialLoader加载失败及解决方式
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • C++11: atomic 头文件
  • Facebook AccountKit 接入的坑点
  • JS字符串转数字方法总结
  • Laravel 实践之路: 数据库迁移与数据填充
  • magento2项目上线注意事项
  • mongodb--安装和初步使用教程
  • mysql 数据库四种事务隔离级别
  • nodejs实现webservice问题总结
  • PHP的类修饰符与访问修饰符
  • php面试题 汇集2
  • python_bomb----数据类型总结
  • Python打包系统简单入门
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spark学习笔记之相关记录
  • Yii源码解读-服务定位器(Service Locator)
  • 第十八天-企业应用架构模式-基本模式
  • 高性能JavaScript阅读简记(三)
  • 码农张的Bug人生 - 见面之礼
  • 面试遇到的一些题
  • 区块链将重新定义世界
  • 设计模式走一遍---观察者模式
  • 听说你叫Java(二)–Servlet请求
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 在weex里面使用chart图表
  • postgresql行列转换函数
  • scrapy中间件源码分析及常用中间件大全
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (Forward) Music Player: From UI Proposal to Code
  • (LeetCode 49)Anagrams
  • (Matlab)使用竞争神经网络实现数据聚类
  • (六)vue-router+UI组件库
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)JAVA中的堆栈
  • **python多态
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 托管代码与非托管代码