欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot返回前端Long類(lèi)型字段丟失精度問(wèn)題及解決方案

 更新時(shí)間:2024年03月12日 08:23:59   作者:凡~同學(xué)  
Java服務(wù)端返回Long整型數(shù)據(jù)給前端,JS會(huì)自動(dòng)轉(zhuǎn)換為Number類(lèi)型,本文主要介紹了SpringBoot返回前端Long類(lèi)型字段丟失精度問(wèn)題及解決方案,感興趣的可以了解一下

一、問(wèn)題分析

Java服務(wù)端返回Long整型數(shù)據(jù)給前端,JS會(huì)自動(dòng)轉(zhuǎn)換為Number類(lèi)型。而Long類(lèi)型能表示的最大值為(2^{63}-1),當(dāng)數(shù)值超過(guò)JS中Number類(lèi)型的最大值(2^{53})時(shí),就會(huì)丟失精度。

二、解決方案

1、返回給前端的屬性類(lèi)型設(shè)為String類(lèi)型。

2、配置Jackson序列化

首先,引入依賴。

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
      <version>2.12.1</version>
</dependency>
<dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-xml</artifactId>
       <version>2.12.1</version>
</dependency>

新建一個(gè)自定義大數(shù)據(jù)序列化類(lèi),如下:

@Slf4j
@Configuration
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizer() {
        return builder -> {
            // 全局配置序列化返回 JSON 處理
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance);
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
            javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
            builder.modules(javaTimeModule);
            builder.timeZone(TimeZone.getDefault());
            log.info("初始化 jackson 配置");
        };
    }
}

新建Jackson配置類(lèi)

@Slf4j
@Configuration
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizer() {
        return builder -> {
            // 全局配置序列化返回 JSON 處理
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE);
            javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance);
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
            javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
            builder.modules(javaTimeModule);
            builder.timeZone(TimeZone.getDefault());
            log.info("初始化 jackson 配置");
        };
    }
}

三、總結(jié)

本文針對(duì)Java服務(wù)端返回Long整型數(shù)據(jù)給前端時(shí)精度丟失問(wèn)題,提出了兩種解決方案,大家根據(jù)自己的需求選擇食用

到此這篇關(guān)于SpringBoot返回前端Long類(lèi)型字段丟失精度問(wèn)題及解決方案的文章就介紹到這了,更多相關(guān)SpringBoot返回Long丟失精度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Valhalla?Project項(xiàng)目介紹

    Java?Valhalla?Project項(xiàng)目介紹

    這篇文章主要介紹了Java?Valhalla?Project項(xiàng)目介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟

    一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,下面這篇文章主要給大家介紹了一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問(wèn)題

    使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問(wèn)題

    這篇文章主要介紹了使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 深入解析面向?qū)ο缶幊淘贘ava中的應(yīng)用小結(jié)

    深入解析面向?qū)ο缶幊淘贘ava中的應(yīng)用小結(jié)

    本文詳細(xì)介紹了面向?qū)ο缶幊痰幕靖拍?包括類(lèi)和對(duì)象、封裝、繼承和多態(tài),通過(guò)具體的Java代碼示例,展示了如何在Java中應(yīng)用這些面向?qū)ο缶幊痰暮诵乃枷?感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • JAVA中static方法的用法實(shí)例詳解

    JAVA中static方法的用法實(shí)例詳解

    這篇文章主要介紹了JAVA中static方法的用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java中static方法的功能、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-12-12
  • 一文帶你了解FastExcel的使用

    一文帶你了解FastExcel的使用

    我們知道?EasyExcel?在作者從阿里離職之后就停止維護(hù)了,但在前兩周?EasyExcel?原作者推出了他的升級(jí)版框架?FastExcel,下面小編就來(lái)和大家聊聊FastExcel的具體使用吧
    2024-12-12
  • Java的String類(lèi)中的startsWith方法和endsWith方法示例詳解

    Java的String類(lèi)中的startsWith方法和endsWith方法示例詳解

    大家應(yīng)該都知道startsWith()方法用于檢測(cè)字符串是否以指定的前綴開(kāi)始,endsWith()方法用于測(cè)試字符串是否以指定的后綴結(jié)束,本文就Java的String類(lèi)中的startsWith方法和endsWith方法給大家詳細(xì)講解,感興趣的朋友一起看看吧
    2023-11-11
  • Java實(shí)現(xiàn)的傅里葉變化算法示例

    Java實(shí)現(xiàn)的傅里葉變化算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的傅里葉變化算法,結(jié)合具體實(shí)例形式分析了基于Java的傅里葉變化算法定義與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • IntelliJ?IDEA?2022.2最新版本激活教程(親測(cè)可用版)永久激活工具分享

    IntelliJ?IDEA?2022.2最新版本激活教程(親測(cè)可用版)永久激活工具分享

    Jetbrains官方發(fā)布了?IntelliJ?IDEA2022.2?正式版,每次大的版本更新,都會(huì)有較大的調(diào)整和優(yōu)化,除本次更新全面擁抱?Java?17?外,還有對(duì)IDE?UI界面,安全性,便捷性等都做了調(diào)整和優(yōu)化完善,用戶體驗(yàn)提升不少,相信后面會(huì)有不少小伙伴跟著更新
    2022-08-08
  • Java解析json報(bào)文實(shí)例解析

    Java解析json報(bào)文實(shí)例解析

    這篇文章主要介紹了Java解析json報(bào)文實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論