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

SpringBoot傳給前端Long類型精度丟失的解決方案

 更新時(shí)間:2025年03月10日 08:26:24   作者:鏡花水月linyi  
最近在做項(xiàng)目的時(shí)候,遇到了一個(gè)Long類型傳給前端之后,接收到的數(shù)值不對(duì)的情況,我一開(kāi)始以為是前端接收數(shù)據(jù)有問(wèn)題,后來(lái)經(jīng)過(guò)查找,了解到這是一個(gè)Long類型精度丟失問(wèn)題,于是寫這篇文章記錄下來(lái),也探究一下為什么會(huì)發(fā)生這種情況,需要的朋友可以參考下

背景

  • 后端:Java、SpringBoot......
  • 前端:JavaScript、Vue......

問(wèn)題展示

接口展示

數(shù)據(jù)響應(yīng)展示:

瀏覽器預(yù)覽展示:

問(wèn)題原因

  • Java中,Long類型為64位有符合整數(shù),取值范圍是-2^63到2^63-1。
  • JavaScript中,所有數(shù)字均基于IEEE 754的雙精度浮點(diǎn)數(shù)標(biāo)準(zhǔn),其安全的整數(shù)范圍是-(2^53-1)到2^53-1。

    超出最大數(shù)值的時(shí)候Long類型就會(huì)精度丟失。

問(wèn)題解決方案

在SpringBoot將數(shù)據(jù)傳給前端前,會(huì)默認(rèn)使用Jackson序列化Java對(duì)象為JSON,Long類型默認(rèn)將其轉(zhuǎn)換成Number類型,到Long類型的數(shù)值超過(guò)Javas安全范圍的數(shù)值時(shí)就會(huì)發(fā)生精度丟失,

方案一:使用@JsonSerialize注解

在你需要處理的字段添加注解。 實(shí)現(xiàn)如下面代碼所示:

 @Data
 public class Book {
       @JsonSerialize(using = ToStringSerializer.class)
       private Long id;  // 主鍵ID
       private String name;
   }

方案二:全局配置

將全部Long類型統(tǒng)一處理。實(shí)現(xiàn)如下面代碼所示:

@Configuration
public class JacksonConfig {

    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
        SimpleModule simpleModule = new SimpleModule();
        // 將Long類型序列化為String類型
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }
}

總結(jié)

上面兩種方案都是將Long類型轉(zhuǎn)換成String類型,前端使用String類型來(lái)保存保持精度不發(fā)生丟失問(wèn)題。開(kāi)始我遇到這個(gè)問(wèn)題的時(shí)候,我直接認(rèn)為是前端代碼寫的有問(wèn)題,所有接到的數(shù)據(jù)才會(huì)出現(xiàn)問(wèn)題,因?yàn)槲襨nife4j響應(yīng)的數(shù)據(jù)沒(méi)有問(wèn)題,結(jié)果前端自己搞來(lái)搞去了很久,找了其他人,之后才有人說(shuō)是這個(gè)問(wèn)題,當(dāng)時(shí)的自己實(shí)際上是第一次前端后端一起合作開(kāi)發(fā)一個(gè)小項(xiàng)目,給我的感受就是有許許多多的問(wèn)題是只有在實(shí)踐中才會(huì)發(fā)現(xiàn)的,而不是坐在大學(xué)的課堂中去學(xué),而應(yīng)該自己主動(dòng)的去進(jìn)行技術(shù)學(xué)習(xí),然后將學(xué)的知識(shí)運(yùn)用在開(kāi)發(fā)中,許許多多的問(wèn)題是只有自己遇到了,才會(huì)記憶猶新,并且通過(guò)自己解決,下次遇到就有應(yīng)對(duì)之法。

以上就是SpringBoot傳給前端Long類型精度丟失的解決方案的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Long類型精度丟失的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼

    SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼

    這篇文章主要介紹了SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • java使用ant.jar解壓縮文件的示例代碼

    java使用ant.jar解壓縮文件的示例代碼

    這篇文章主要介紹了java使用ant.jar解壓縮文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java隊(duì)列同步器之CountDownLatch實(shí)現(xiàn)詳解

    Java隊(duì)列同步器之CountDownLatch實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java隊(duì)列同步器之CountDownLatch實(shí)現(xiàn)詳解,CountDownLatch是一個(gè)同步工具類,它允許一個(gè)或多個(gè)線程一直等待,直到其他線程執(zhí)行完后再執(zhí)行,例如,應(yīng)用程序的主線程希望在負(fù)責(zé)啟動(dòng)框架服務(wù)的線程已經(jīng)啟動(dòng)所有框架服務(wù)之后執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • spring的TransactionSynchronizationAdapter事務(wù)源碼解析

    spring的TransactionSynchronizationAdapter事務(wù)源碼解析

    這篇文章主要介紹了spring的TransactionSynchronizationAdapter事務(wù)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java查詢緩存之優(yōu)化重復(fù)查詢的執(zhí)行效率問(wèn)題

    Java查詢緩存之優(yōu)化重復(fù)查詢的執(zhí)行效率問(wèn)題

    這篇文章主要介紹了Java查詢緩存之優(yōu)化重復(fù)查詢的執(zhí)行效率問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    這篇文章主要介紹了Java的Flowable工作流之加簽轉(zhuǎn)簽詳解,Flowable是一個(gè)開(kāi)源的工作流引擎,它提供了一套強(qiáng)大的工具和功能,用于設(shè)計(jì)、執(zhí)行和管理各種類型的工作流程,需要的朋友可以參考下
    2023-11-11
  • springboot項(xiàng)目中讀取.env文件參數(shù)值的兩種主流實(shí)現(xiàn)方式

    springboot項(xiàng)目中讀取.env文件參數(shù)值的兩種主流實(shí)現(xiàn)方式

    在Spring Boot項(xiàng)目中,.env文件并非Spring Boot原生支持的配置格式,但可以通過(guò)第三方庫(kù)或自定義讀取邏輯來(lái)加載.env文件中的參數(shù),下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2025-12-12
  • Java多版本環(huán)境管理工具選型與命令速查方式

    Java多版本環(huán)境管理工具選型與命令速查方式

    本文介紹了多JDK并存時(shí)的安裝來(lái)源、版本切換、JAVA_HOME與構(gòu)建工具對(duì)齊方式,以及在Linux、macOS、Windows下的常見(jiàn)選型,介紹了SDKMAN、jEnv、Jabba、Homebrew等工具的使用方法及適用場(chǎng)景,并提供了常見(jiàn)問(wèn)題及處理方式
    2026-04-04
  • MyBatis框架中Executor執(zhí)行器的使用及說(shuō)明

    MyBatis框架中Executor執(zhí)行器的使用及說(shuō)明

    文章詳細(xì)介紹了MyBatis的Executor執(zhí)行器,包括其定義、作用、生命周期、四種可選執(zhí)行器類型(SIMPLE、REUSE、BATCH、CachingExecutor)以及它們?cè)趫?zhí)行鏈路中的協(xié)作關(guān)系,文章還討論了插件機(jī)制、緩存機(jī)制、事務(wù)管理以及常見(jiàn)誤區(qū)澄清等內(nèi)容
    2025-11-11
  • 詳解Spring mvc DispatchServlet 實(shí)現(xiàn)機(jī)制

    詳解Spring mvc DispatchServlet 實(shí)現(xiàn)機(jī)制

    本篇文章主要介紹了詳解Spring mvc DispatchServlet 實(shí)現(xiàn)機(jī)制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論

古交市| 嘉黎县| 开平市| 阜南县| 克东县| 梧州市| 孟连| 太保市| 银川市| 楚雄市| 通河县| 娄烦县| 永平县| 浑源县| 贵德县| 渝北区| 兴仁县| 乐平市| 沂南县| 沂源县| 封丘县| 綦江县| 奉化市| 河西区| 来宾市| 平江县| 沂源县| 西和县| 嵊州市| 保山市| 满洲里市| 盐山县| 崇阳县| 南阳市| 虹口区| 平昌县| 安丘市| 康马县| 汝州市| 文水县| 缙云县|