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
英文地址,請注明出處:http://en.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:…