长整型Long返回到前端,js出现精度丢失怎么办
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,前端后接口对接时,如果后台的id或者其他字段使用了长整型Long,就很容易出现js丢失精度问题。用接口工具调用时,往往id返回都是对的,但是一到页面上,js就后缀000。前端说返回的值有问题,F12看
千家信息网最后更新 2025年01月25日长整型Long返回到前端,js出现精度丢失怎么办
前端后接口对接时,如果后台的id或者其他字段使用了长整型Long,就很容易出现js丢失精度问题。用接口工具调用时,往往id返回都是对的,但是一到页面上,js就后缀000。
前端说返回的值有问题,F12看看!后端说没问题,Postman看看!
这是js支持的问题,解决这个问题的办法很显然,返回字符串即可。
怎么实现呢,你可以直接将vo对象的id改成String类型,但是会带来copyProperties的不便,所以见过很多人通过增加虚拟字段实现。下面是一个整体解决方案:(需要略微了解下Spring的消息序列化原理,譬如MappingJackson2HttpMessageConverter是干嘛的)
MainConfig(通常是主config类,@Configuration注解的,用来导入一些基础配置)增加MessageConvert的重写extendMessageConverters:
@Overridepublic void extendMessageConverters(List
> converters) { MappingJackson2HttpMessageConverter jacksonConverter = null; for (HttpMessageConverter> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { jacksonConverter = (MappingJackson2HttpMessageConverter) converter; } } if (jacksonConverter != null) { jacksonConverter.setObjectMapper(new CustomObjectMapper()); converters.add(jacksonConverter); }} - CustomObjectMapper的实现:
public class CustomObjectMapper extends ObjectMapper {public CustomObjectMapper() { super(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); registerModule(simpleModule);}}
这样,接口返回的时候,所有的长整型字段,会被当做字符串处理,自动加上双引号。
问题
字段
接口
前端
字符
字符串
精度
不便
办法
原理
后台
后缀
基础
对象
工具
序列
引号
整体
方案
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
基于网络安全的集成方案的撰写
思科服务器配置管理IP
编程跟软件开发一样吗
数据库营销教程
服务器网易云自动签到
如何找到点赞过的服务器我的世界
真的有网络安全比赛吗
分布式轻量级数据库
20m宽带能玩联通的服务器吗
西藏算力服务器租赁收费标准
陕西省首个网络安全产业园在哪里
数据库反输出
超微服务器gpt修复
云服务器推荐 知乎
深圳市期待互联网科技电话
网络安全远离手机班会教案
零基础学软件开发编程
ssr服务器推荐
思科服务器配置管理口
计算机网络技术专用语言怎么发音
阜阳直播平台软件开发哪家好
电脑服务器网速慢怎么解决
网络安全技术应该怎么自学
bosch软件开发流程
美国高防服务器安全交易
中山企业软件开发大概要多少钱
网络安全风险隐患整改通知
AI工具在软件开发测试中的
网络安全应急比赛
日志服务器 搭建