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

文章目录

  • 一、前言
  • 二、问题描述
    • 2.1、问题背景
    • 2.2、问题示例
  • 三、解决方法
    • 3.1、将ID转换为字符串
    • 3.2、使用@JsonSerialize注解
    • 3.3、使用@JsonFormat注解

一、前言

在后端开发中,我们经常会遇到需要将ID作为标识符传递给前端的情况。当ID为long类型时,如果该ID超过19位,前端JavaScript在处理时可能会遇到精度问题,导致最后两位变成00。本文将探讨这一问题的原因以及解决方案。

二、问题描述

2.1、问题背景

在Java中,Long类型的取值范围是-92233720368547758089223372036854775807(即-2^642^64-1)。然而实测中发现,当Long类型超过19位时,容易发生精度丢失问题,最后两位数字变成了00

说明:

  • 通过http请求直接访问接口拿到响应报文时精度没有丢失
  • 通过postman,apipost等工具访问请求时精度没有丢失
  • 通过前端访问或者swagger页面访问时精度丢失了。

2.2、问题示例

在这里插入图片描述
通过swagger调用接口:
在这里插入图片描述

响应报文Long类型的最后两位变成了00

三、解决方法

3.1、将ID转换为字符串

为了避免精度丢失,我们可以在后端将long类型的ID转换为字符串。这样,无论ID的长度如何,前端都可以正确地接收和处理。
在这里插入图片描述

3.2、使用@JsonSerialize注解

我们可以使用@JsonSerialize注解来指定ID字段的序列化方式。通过ToStringSerializer类,我们可以确保ID在序列化时被转换为字符串。

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class Student {@JsonSerialize(using = ToStringSerializer.class)private long id;private String name;
}

在这里插入图片描述
注意:
添加@JsonSerialize注解后,虽然实体类中id类型是Long,但是返回值中是String类型。

在这里插入图片描述

3.3、使用@JsonFormat注解

可以使用@JsonFormat(shape = JsonFormat.Shape.STRING)将字段转换为String类型

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class Student {@JsonFormat(shape = JsonFormat.Shape.STRING)private long id;private String name;
}

响应报文示例:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88337.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络实验——无线局域网安全实验

实验1. WEP和WPA2-PSK实验一、实验目的验证AP和终端与实现WEP安全机制相关的参数的配置过程。验证AP和终端与实现WPA2-PSK安全机制相关的参数的配置过程。验证终端与AP之间建立关联的过程。验证关闭端口的重新开启过程。验证属于不同BSS的终端之间的数据传输过程。二、实验任务…

【从零开始学Dify】大模型应用开发平台Dify本地化部署

目录Dify一、本地化部署1、安装docker2、安装Dify(1)拉取代码到本地(2)docker部署(3)查看服务状态(4)web端部署(5)登录二、可能会出现的问题(1&am…

LVGL应用和部署(和物理按键交互)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】屏幕除了显示部分,还要去和其他外设进行交互,这是非常重要的一个处理方法。我们知道,不管是mcu,还是…

限流式保护器如何筑牢无人驾驶汽车充电站的安全防线

摘要: 随着新能源汽车,尤其是无人驾驶车队的快速发展,充电设施的安全可靠性至关重要。交流充电桩(俗称“慢充桩”)作为重要的充电基础设施,其末端回路的安全保护需满足国家标准GB51348-2019的严格要求&…

专题:2025母婴行业洞察报告|附60+份报告PDF汇总下载

原文链接:https://tecdat.cn/?p42908 全球母婴市场正经历结构性增长,一面是欧美成熟市场的品质消费升级,一面是东南亚、中东等新兴市场的人口红利释放。2020至2026年,全球母婴市场规模将从1859亿美元增至3084亿美元,年…

从零搭建多商户商城系统源码:技术栈、数据库设计与接口规划详解

如今,多商户商城系统已成为传统零售转型与新型电商平台构建的关键利器。无论是打造像某宝、某东这样的综合型平台,还是服务于垂直行业的独立电商,一套高效、可扩展的多商户商城系统源码,往往决定着平台的成败。 今天,小…

在Docker中运行macOS的超方便体验!

在数字化和开发人员快速迭代的今日,拥有一个便捷、高效的开发环境成为每个开发者梦寐以求的事情。特别是在需要操作多个系统、开发跨平台应用时,调试和测试的便利性显得尤为重要。今天为大家介绍的这款开源项目,正是一个解决此类问题的利器—…

Kettle导入Excel文件进数据库时,数值发生错误的一种原因

1、问题描述及原因 在使用kettle读取Excel文件、并导入数据库时,需要读取Excel中的数值、日期(或日期时间、时间)、文本这三种类型的列进来,发现读取其中的数值时,读取的数字就不对。 经调查,原因是,在“导出数据为E…

Windows安装DevEco Studio

1. 概述 DevEco Studio是华为基于IDEA Community开源工具开发的一站式HarmonyOS应用及元服务开发平台,为开发者提供代码开发、编译构建以及调测等功能 2. 运行环境要求 操作系统:Windows10 64位、Windows11 64位 内存:16GB及以上 硬盘&…

PLC框架-1.3.2 报文750控制汇川伺服的转矩上下限

本文介绍1200PLC如何使用750报文设定伺服转矩的上下限。 750号报文 PLC---->伺服 (控制) 伺服--->PLC (状态) PZD1

Redis知识集合---思维导图(持续更新中)

一、Redis中常见的数据类型有哪些?二、Redis为什么这么快?三、为什么Redis设计为单线程?6.0版本为何引入多线程?四、

mac m1安装大模型工具vllm

1 更新系统环境 参考vllm官网文档,vllm对apple m1平台mac os, xcoder, clang有如下要求 OS: macOS Sonoma or later SDK: XCode 15.4 or later with Command Line Tools Compiler: Apple Clang > 15.0.0 在App Store更新macOS和XCoder,依据XCoder版本…

解锁localtime:使用技巧与避坑指南

目录 一、引言 1.1 背景与目的 1.2 localtime 函数简介 二、localtime 函数详解 2.1 函数原型与参数 2.2 返回值与 tm 结构体 2.3 基本使用示例 三、localtime 函数的缺陷剖析 3.1 多次调用同一共享区间导致错误 3.1.1 问题现象展示 3.1.2 原因深入分析 3.1.3 实际影…

郑州机械设计研究所 -PHM产品序列概览

1.设备状态监测系统 动态信号监测很像是三个独立通道,振动,转速,然后高频的某个频带。或者是同一个振动信号做的低频和高频两个带通,时域和频域组图。实时检测,很明显是24个时 -频指标。 动态分析看起来像趋势图。 2.…

《棒垒球知道》奥运会的吉祥物是什么·棒球1号位

Olympic Mascots & Baseball/Softball Games History ⚾(奥运吉祥物与棒垒球赛事全科普)1984洛杉矶奥运会 / Los Angeles 1984Mascot: Sam the Eagle(山姆鹰)美国精神象征,红白蓝配色超吸睛!Baseball/S…

【提高篇-基础知识与编程环境:1、Linux系统终端中常用的文件与目录操作命令】

Linux终端提供了丰富的命令来操作文件和目录,以下简单介绍一些常用的命令: 一、目录操作命令 pwd - 显示当前工作目录 pwd #输出当前所在目录的绝对路径 cd - 切换目录 cd /path/to/directory # 切换到指定目录 cd … # …

前端性能优化:从之理论到实践的破局道

🚀 前端性能优化:从之理论到实践的破局道 摘要:本文针对首屏加载、渲染卡顿等核心痛点,结合当前主流技术栈给出可落地的优化方案一、为什么你的页面"又慢又卡"? 用户真实体验数据: 加载时间超过3…

2025年最新Python+Playwright自动化测试- 隐藏元素定位与操作

1.简介 对于前端隐藏元素,一直是自动化定位元素的隐形杀手,让人防不胜防。脚本跑到隐藏元素时位置时报各种各样的错误,可是这种隐藏的下拉菜单又没有办法避免,所以非常头痛,这一篇只为交流隐藏元素自动化定位处理方法以…

跨境电商税务解决之道:在合规航道上驶向全球市场

首席数据官高鹏律师数字经济团队创作AI辅助当某3C品类跨境卖家因未同步境内交易流水被处以20万元罚款,当某服饰品牌因欧盟增值税申报疏漏导致货物滞留港口,当东南亚市场的“低税率红利”变成“税务稽查雷区”——跨境电商的黄金时代里,税务合…

(6)机器学习小白入门 YOLOv:图片的数据预处理

(1)机器学习小白入门YOLOv :从概念到实践 (2)机器学习小白入门 YOLOv:从模块优化到工程部署 (3)机器学习小白入门 YOLOv: 解锁图片分类新技能 (4)机器学习小白入门YOLOv :图片标注实操手册 (5)机器学习小白入门 YOLOv:…