最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot返回前端Long型丟失精度后兩位變成00的解決

 更新時(shí)間:2026年01月14日 09:12:41   作者:五月天的尾巴  
在后端開發(fā)中,當(dāng)Long類型的ID超過19位時(shí),前端JavaScript可能會(huì)出現(xiàn)精度問題,導(dǎo)致最后兩位變成00,本文提出了三種解決方案:將ID轉(zhuǎn)換為字符串、使用@JsonSerialize注解和使用@JsonFormat注解,通過這些方法,可以確保ID在前后端傳輸過程中不會(huì)發(fā)生精度丟失

一、前言

在后端開發(fā)中,我們經(jīng)常會(huì)遇到需要將ID作為標(biāo)識(shí)符傳遞給前端的情況。當(dāng)ID為long類型時(shí),如果該ID超過19位,前端JavaScript在處理時(shí)可能會(huì)遇到精度問題,導(dǎo)致最后兩位變成00。本文將探討這一問題的原因以及解決方案。

二、問題描述

2.1、問題背景

在Java中,Long類型的取值范圍是-92233720368547758089223372036854775807(即-2^642^64-1)。然而實(shí)測中發(fā)現(xiàn),當(dāng)Long類型超過19位時(shí),容易發(fā)生精度丟失問題,最后兩位數(shù)字變成了00。

說明:

  • 通過http請(qǐng)求直接訪問接口拿到響應(yīng)報(bào)文時(shí)精度沒有丟失
  • 通過postman,apipost等工具訪問請(qǐng)求時(shí)精度沒有丟失
  • 通過前端訪問或者swagger頁面訪問時(shí)精度丟失了。

2.2、問題示例

通過swagger調(diào)用接口:

響應(yīng)報(bào)文Long類型的最后兩位變成了00

三、解決方法

3.1、將ID轉(zhuǎn)換為字符串

為了避免精度丟失,我們可以在后端將long類型的ID轉(zhuǎn)換為字符串。這樣,無論ID的長度如何,前端都可以正確地接收和處理。

3.2、使用@JsonSerialize注解

我們可以使用@JsonSerialize注解來指定ID字段的序列化方式。通過ToStringSerializer類,我們可以確保ID在序列化時(shí)被轉(zhuǎn)換為字符串。

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注解后,雖然實(shí)體類中id類型是Long,但是返回值中是String類型。

3.3、使用@JsonFormat注解

可以使用@JsonFormat(shape = JsonFormat.Shape.STRING)將字段轉(zhuǎn)換為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;
}

響應(yīng)報(bào)文示例:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 處理Log4j2不能打印行號(hào)的問題(AsyncLogger)

    處理Log4j2不能打印行號(hào)的問題(AsyncLogger)

    這篇文章主要介紹了處理Log4j2不能打印行號(hào)的問題(AsyncLogger),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring?IOC容器使用詳細(xì)講解

    Spring?IOC容器使用詳細(xì)講解

    IOC-Inversion?of?Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • Java中的相除(/)和取余(%)的實(shí)現(xiàn)方法

    Java中的相除(/)和取余(%)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java中的相除(/)和取余(%)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • JAVA Integer類常用方法解析

    JAVA Integer類常用方法解析

    這篇文章主要介紹了JAVA Integer類常用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring整合Mybatis 掃描注解創(chuàng)建Bean報(bào)錯(cuò)的解決方案

    Spring整合Mybatis 掃描注解創(chuàng)建Bean報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Spring 整合Mybatis 掃描注解創(chuàng)建Bean報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java線程池核心工作原理解析

    Java線程池核心工作原理解析

    線程池是一個(gè)“生產(chǎn)者-消費(fèi)者”模型的優(yōu)雅實(shí)現(xiàn),生產(chǎn)者提交任務(wù)(Runnable對(duì)象),消費(fèi)者(池中的線程)從任務(wù)隊(duì)列中獲取并執(zhí)行任務(wù),本文給大家介紹Java線程池核心工作原理解析,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Java算法之快速排序舉例詳解

    Java算法之快速排序舉例詳解

    這篇文章主要介紹了Java算法之快速排序的相關(guān)資料,快速排序是一種高效的排序算法,通過遞歸的方式將待排序數(shù)組分成小部分進(jìn)行排序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Java讀取Excel文件內(nèi)容的簡單實(shí)例

    Java讀取Excel文件內(nèi)容的簡單實(shí)例

    這篇文章主要介紹了Java讀取Excel文件內(nèi)容的簡單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • Java實(shí)戰(zhàn)項(xiàng)目 醫(yī)院預(yù)約掛號(hào)系統(tǒng)

    Java實(shí)戰(zhàn)項(xiàng)目 醫(yī)院預(yù)約掛號(hào)系統(tǒng)

    本文是一個(gè)Java語言編寫的實(shí)戰(zhàn)項(xiàng)目,是一個(gè)醫(yī)院預(yù)約掛號(hào)系統(tǒng),主要用到了jdbc+jsp+mysql+ajax等技術(shù),技術(shù)含量比較高,感興趣的童鞋跟著小編往下看吧
    2021-09-09
  • Map映射LinkedHashSet與LinkedHashMap應(yīng)用解析

    Map映射LinkedHashSet與LinkedHashMap應(yīng)用解析

    這篇文章主要為大家介紹了Map映射LinkedHashSet與LinkedHashMap的應(yīng)用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論

蚌埠市| 杭锦后旗| 射阳县| 泰安市| 延庆县| 望奎县| 长宁县| 金塔县| 天台县| 纳雍县| 锦屏县| 巴楚县| 新民市| 长白| 巍山| 澄江县| 改则县| 金昌市| 青铜峡市| 南城县| 颍上县| 永春县| 宁武县| 西青区| 惠东县| 平山县| 余江县| 宜春市| 会宁县| 天峨县| 阿尔山市| 钟祥市| 阿瓦提县| 平利县| 西华县| 遵义市| 谢通门县| 华安县| 丹棱县| 永宁县| 依兰县|