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

SpringBoot返回前端Long類型字段丟失精度問題及解決方案

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

一、問題分析

Java服務端返回Long整型數(shù)據(jù)給前端,JS會自動轉換為Number類型。而Long類型能表示的最大值為(2^{63}-1),當數(shù)值超過JS中Number類型的最大值(2^{53})時,就會丟失精度。

二、解決方案

1、返回給前端的屬性類型設為String類型。

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>

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

@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配置類

@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 配置");
        };
    }
}

三、總結

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

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

相關文章

  • 在Java中如何比較兩個對象淺析

    在Java中如何比較兩個對象淺析

    在工作中我們經常會遇到這樣的需求——比較兩個對象是否相等,如果不相等的話,取出不相等的字段,這篇文章主要給大家介紹了關于在Java中如何比較兩個對象的相關資料,需要的朋友可以參考下
    2021-11-11
  • SWT(JFace)體驗之StackLayout布局

    SWT(JFace)體驗之StackLayout布局

    SWT(JFace)體驗之StackLayout布局實現(xiàn)代碼。
    2009-06-06
  • TOMCAT內存溢出及大小調整的實現(xiàn)方法

    TOMCAT內存溢出及大小調整的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猅OMCAT內存溢出及大小調整的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 詳解JAVA 線程-線程的狀態(tài)有哪些?它是如何工作的?

    詳解JAVA 線程-線程的狀態(tài)有哪些?它是如何工作的?

    這篇文章主要介紹了詳解JAVA 線程的的相關資料,文中講解非常細致,源碼幫助大家更好的理解和學習,感興趣的朋友可以參考下
    2020-06-06
  • SpringBoot中異常處理實戰(zhàn)記錄

    SpringBoot中異常處理實戰(zhàn)記錄

    在我們實際項目開放中經常需要我們處理很多的異常,如何在spring boot項目里面實現(xiàn)異常處理呢,下面這篇文章主要給大家介紹了關于SpringBoot中異常處理的相關資料,需要的朋友可以參考下
    2022-05-05
  • java之Timer和TimerTask簡單demo(分享)

    java之Timer和TimerTask簡單demo(分享)

    下面小編就為大家?guī)硪黄猨ava之Timer和TimerTask簡單demo(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • springboot創(chuàng)建的web項目整合Quartz框架的項目實踐

    springboot創(chuàng)建的web項目整合Quartz框架的項目實踐

    本文主要介紹了springboot創(chuàng)建的web項目整合Quartz框架的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Mybatis-plus對單表操作的封裝實現(xiàn)

    Mybatis-plus對單表操作的封裝實現(xiàn)

    本文詳細介紹了MyBatis-Plus單表操作,包括自定義SQL、邏輯刪除、樂觀鎖、全局攔截器和代碼生成器等,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 詳解使用Spring?Data?repository進行數(shù)據(jù)層的訪問問題

    詳解使用Spring?Data?repository進行數(shù)據(jù)層的訪問問題

    這篇文章主要介紹了使用Spring?Data?repository進行數(shù)據(jù)層的訪問,抽象出Spring Data repository是因為在開發(fā)過程中,常常會為了實現(xiàn)不同持久化存儲的數(shù)據(jù)訪問層而寫大量的大同小異的代碼,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2022-06-06
  • Java 跨域問題的處理方式

    Java 跨域問題的處理方式

    這篇文章主要介紹了Java 跨域問題的處理方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11

最新評論