Spring Boot接口返回Long类型的数据时丢失精度的全局处理

SpringBoot实战:3种方法解决JS处理Long类型精度丢失(含代码对比) 本文针对SpringBoot应用中JavaScript处理Long类型数据时出现的精度丢失问题,提供了三种实战解决方案。通过对比@JsonSerialize注解、全局ObjectMapper配置以及Fastjson2库替换三种方法的优缺点与适用场景,帮助开发者根据项目需求选择最佳策略,确保前后端数据交互的完整性与准确性。 阅读详情

1、问题

当实体类中的字段为Long类型时,通过Ajax请求返回给前段,在js中数据会丢失精度
在这里插入图片描述
直接通过postman请求或通过浏览器请求,看下响应则不会丢失精度
在这里插入图片描述

2、处理方式

1、使用@JsonSerialize注解

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

2、使用@JsonFormat注解

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

3、全局配置ObjectMapper Bean

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

@Slf4j
@Configuration
public class JacksonConfig {
    /**
     * Jackson对象映射器
     * @param builder builder
     * @return ObjectMapper
     */
    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        try {
            // 将Long类型返回时修改为String类型
            builder.serializerByType(Long.TYPE, ToStringSerializer.instance);
            builder.serializerByType(Long.class, ToStringSerializer.instance);
        } catch (Exception e) {
            log.info("Serialization exception!");
        }
        return builder.build();
    }
}
手把手教你学Simulink——基于经典PID控制的电机系统场景实例:BLDC电机PID电流控制策略仿真 *无刷直流电机(Brushless DC Motor, BLDC)**因其高效率、长寿命和低维护成本,在众多领域如家用电器、工业自动化、电动汽车等得到了广泛应用。为了实现对BLDC电机的有效控制,通常采用基于霍尔传感器或反电动势检测的换相技术,并结合电流闭环控制以提高系统的动态响应和稳定性。本教程将带你使用构建一个基于PID控制的BLDC电机电流控制策略仿真模型BLDC电机建模PID控制器设计与应用系统仿真与调试控制效果分析本文介绍了如何使用构建一个。 阅读详情

相关推荐

傻白入门芯片设计,SystemVerilog Assertion(SVA)学习(二十一)

对SVA(SystemVerilogt Assertion)有了更深刻的认识,对经典的AveMC形式验证工具进行了介绍

qq_46675545的博客 8471

spring Boot处理返回给前端Long类型精度丢失

项目中采用springcloud Alibaba技术开发分布式系统,开发过程中采用雪花算法生成分布式Id,为Long类型,而Long类型返回给前端,会出现精度丢失问题。接下来我们主要了解下,如何快速的处理精度丢失的问题。

xiaoliu_alone的博客 4263

【2025年五一数学建模竞赛】A题 完整论文 模型建立与求解

2025年五一数学建模竞赛 A题:基于历史数据与模式识别的道路车流量推测模型研究

Magnolia_He的博客 3783

后端传long类型数据到前端精度丢失问题

这是因为在 JavaScript 中,数字类型默认会被转换为双精度浮点数,而双精度浮点数的精度有限,只能精确表示 2 的 53 次方以内(即 Number.MAX_SAFE_INTEGER,约为 9 x 10^15)的整数

weixin_58724261的博客 6616

Istio ICA考试之路---2-2

找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。

Q先生 854

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 241

【java】Long类型返回到前端数值错误精度丢失

1.在对象字段上加注解 @JsonSerialize(using = ToStringSerializer.class) private Long id;

王佑辉的博客 1072

【PyGIS】ERA5降雨蒸散发数据预处理

ERA5-LAND降雨蒸散发数据预处理

```On Earth, Be Water, By Coding``` 3145

Spring Boot返回前端Long型丢失精度

spring cloud alibaba项目中long类型数据返回前端最后两位变成00,参考了很多博客最后这篇对此项目有效果: 解决办法之一就是让Javascript把数字当成字符串进行处理,对Javascript来说如果不进行运算,数字和字符串处理起来没有什么区别。但如果需要进行运算,只能采用其他方法,例如JavaScript的一些开源库 bignum、bigint等支持长整型的处理。在我们这个场景里不需要进行运算,且Java进行JSON处理的时候是能够正确处理long型的,所以只需要将数字转化..

zhangkang65的专栏 4458

【船舶】风浪流模型水面船舶三自由度运动仿真【含Matlab源码 4379期】

风浪流模型水面船舶三自由度运动仿真 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 693

在 SAP SD(销售与分销)模块中,销售合同 / 订单的抬头(Header) 和行项目(Item) 核心数据表如下,按 “核心表 + 扩展表” 分类说明,同时区分销售合同(Contract,类型 W

SAP SD模块中销售合同/订单的核心数据表分为抬头和行项目两类。核心抬头表包括VBAK(基础数据)和VBUK(状态数据),核心行项目表包括VBAP(基础数据)和VBUP(状态数据)。扩展表包含VBAKE(抬头增强)、VBAPe(行项增强)、VBEP(计划行)、VBFA(凭证流)等。销售合同(WK/WC)和订单(OR)通过VBAK-AUART字段区分,核心表结构相同。查询时需注意单据类型筛选,并通过VBELN主键关联抬头和行项数据,KNUMV关联定价条件,VBFA表追踪凭证流。

金牌架构师 1091

SpringBoot返回前端Long类型字段丢失精度问题及解决方案

本文针对Java服务端返回Long整型数据给前端时精度丢失问题,提出了两种解决方案,大家根据自己的需求选择食用,欢迎大家批评指正。

c739816555的博客 2409

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

五年经验,接口设计还返回Long类型字段?

前段时间有个同事问,集成环境服务是不是有bug,操作过程中提示音频不存在,后来经过排查发现是接口返回的Long音频id,js对Long类型有精度丢失问题。之前audioId是数据库的自增id,后来因为数据库分库分表,audioId采用了雪花算法生成,生成的audioId是17位,js中数字超过16位就会有精度丢失问题。可以看看数据库里面的audioId再看看前端展示的audioId。

爱琴孩的博客 545

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring Boot 处理 Long 类型的 json 数据,前端调用精度丢失,变成 00

问题描述 错误的ID,最后两位数都是0,即: 1152921504735848700, 但是,正确的是: 1152921504735848759, 遇到Long类型的数据,传送给前端遇到精度丢失的问题. 后端的订单号值比如1089713253179727872 传给前端 显示出来是1089713253179727900。 拿postman测试接口没有问题,查到的是正确的数据,原来是因为Long类型数据传给前端可能精度丢失,js中的数据类型不能包含所有的java long值。 这个问题真是在前后端连接的夹缝中

AI天才研究院 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Long类型后端到前端精度丢失问题

在后端开发中处理Long类型数据时,注意 JavaScript 的精度限制十分重要。通过配置 Jackson 的,可以让所有Long类型字段序列化为字符串,从而避免精度丢失的问题。Spring Boot 的自动化配置特性让我们无需手动调用,就能在全局范围内应用此配置,使得后端传递到前端的数据在大数值时也能准确无误。

qq_44199605的博客 2120

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

spring boot中使用@ResponseBody注解返回json时Long精度丢失

spring boot中使用@ResponseBody注解返回json时Long精度丢失 1.现象 对于Long 类型的数据,如果我们在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度丢失...

chuanxuzheng1943的博客 1523

js long类型精度丢失_解决js处理Long类型丢失精度的问题

项目中很多时候都会用到json,常用的有fastjson,Jackson等等这些,有时候为了统一,我们通常就会约定使用某一种。不管使用哪种,Spring MVC返回个前段Long类型的数据时,js在获取数据时会丢失精度,从而造成数据的不准确,解决方式呢,就是在序列化时,会将Long类型的数据转化为String类型在使用Spring MVC默认的Jackson时,我们可以这么做:@Configura...

weixin_39638801的博客 1249

Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案

不过,JavaScript中 Number 类型的安全整数范围是 -2^53 到 2^53 ,如果 Long 类型的值超出这个范围,在前端JavaScript处理时可能会出现精度丢失问题。例如,一个Java对象中有一个 Long 类型的属性 id ,值为 1234567890123L ,在返回的JSON中会表示为 {"id":1234567890123}。在Spring Boot中,当接口数据字段为 Long 类型时,返回页面的JSON中该字段通常会被序列化为数字类型。

quyunde的博客 963

解决js处理Long类型丢失精度的问题 jquery JSON.parse的问题

项目中很多时候都会用到json,常用的有fastjson,Jackson等等这些,有时候为了统一,我们通常就会约定使用某一种。 不管使用哪种,Spring MVC返回个前段Long类型的数据时,js在获取数据时会丢失精度,从而造成数据的不准确,解决方式呢,就是在序列化时,会将Long类型的数...

chuangweichang5471的博客 2122

Spring Boot返回前端Long型丢失精度 后两位 变成00

Spring Boot返回前端Long型丢失精度 后两位 变成00

weixin_49114503的博客 1329

long类型的id属性传到前端会精度丢失的解决方案

记录一个前段时间使用雪花算法时候遇到的坑。 场景大概是这样的: 我有一个设备信息实体类,设备id是 long 类型,映射到数据库中是一个设备表,主键id是 bigint 类型。id的生成策略是使用雪花算法。 使用postman调用接口,获取到的JSON是正常的 { "id": 1297873308628307970, ... //其他属性省略 } 但是到了前端那边id的值却变成了1297873308628300000 仔细一比较发现这两个数值还挺像的,只有后4位不一样,当时立马想到了是不是精度

czx2018的博客 4290

java 后端Long类型数据返回到前端精度丢失

问题简述 Java后端的Long类型数据,传到前端会出现精度丢失(位数一样,但数据不正确),比如后端返回的数据为17位:52525415252525248,前端会变成17位的52525415252525240。 虽然位数一致,但是数据不正确。 问题原因 对于前后台传参过程中的Long类型,JS内置有32位整数,而number类型的安全整数是53位。如果超过53位,则精度会丢失。如果后台传来一个64位的Long型整数,因为超过了53位,所以后台返回的值和前台获取的值会不一样。出现数据解析后不一致的问题

♨ 3814

springboot解决Long类型数据传入前端损失精度

之前在做springboot项目时遇到Long类型数据直接用@ResponseBody返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题。之后使用自定义消息转化器全部转为String解决。代码如下:@EnableWebMvc //默认情况下Spring Boot 使用WebMvcAutoConfiguration中配置的各种属性,@Ena...

tianjidudao的博客 6599

Jackson 序列化机制深度解析:解决前端 Long 类型精度丢失问题

本文深入解析了 Spring Boot 中 Jackson 的序列化机制,重点解决了 Long 类型数据在前端精度丢失问题。通过对比 @RequestParam 和 @RequestBody 的参数绑定差异,指出 JSON 请求体更适合处理大整数。文章详细分析了 JavaScript 的精度限制(53位),并提供了全局配置方案:使用 JacksonConfig 自动将超出安全范围的 Long 类型序列化为字符串,同时保留日期时间格式化功能。该方案通过 @AutoConfiguration 确保优先加载,全面

树後蹲壹熊 780
上一篇: 通过Aop实现限制修改删除指定账号的数据
下一篇: Spring Boot 通过全局配置去除字符串类型参数的前后空格
村口老师傅
博客等级 码龄9年 67粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值