国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了SpringBoot返回前端Long類型字段丟失精度問題及解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、問題分析

Java服務(wù)端返回Long整型數(shù)據(jù)給前端,JS會自動轉(zhuǎn)換為Number類型。而Long類型能表示的最大值為(),當(dāng)數(shù)值超過JS中Number類型的最大值()時,就會丟失精度。

二、解決方案

1、返回給前端的屬性類型設(shè)為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 配置");
        };
    }
}

三、總結(jié)

本文針對Java服務(wù)端返回Long整型數(shù)據(jù)給前端時精度丟失問題,提出了兩種解決方案,大家根據(jù)自己的需求選擇食用,歡迎大家批評指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-842395.html

到了這里,關(guān)于SpringBoot返回前端Long類型字段丟失精度問題及解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot解決前端js處理大數(shù)字丟失精度問題Long轉(zhuǎn)String

    一、Jackson對Long類型的處理導(dǎo)致精度丟失的問題 表的某一個字段的類型是 BIGINT,對應(yīng)的 Java 類的屬性的類型就是 Long。當(dāng)這個字段的值由后端返回給前端網(wǎng)頁時,發(fā)現(xiàn)了精度丟失的問題。比如后端返回的值是 588085469986509185,到了前端是 588085469986509200,后面的幾位數(shù)變成了

    2024年02月21日
    瀏覽(92)
  • Es 通過javaApi上傳數(shù)據(jù)Long類型丟失精度的問題一次性解決

    通過 updateRequest.docAsUpsert(true) true 表示無匹配_id是插入數(shù)據(jù),false 表示無匹配_id會拋出異常

    2024年02月15日
    瀏覽(93)
  • SpringBoot后端Long數(shù)據(jù)傳到前端js精度損失問題

    在對應(yīng)的字段上添加注解,將 Long 轉(zhuǎn)為 String 后傳輸。 在 js 對應(yīng)的結(jié)果接收上使用 BigInt 。

    2024年02月19日
    瀏覽(100)
  • 前端處理后端傳來的Long型數(shù)據(jù)精度丟失的問題--對象轉(zhuǎn)換器Jackson0bjectMapper

    1、問題描述 前端提交參數(shù) 后端處理 前端js對long型數(shù)據(jù)進行處理時丟失精度(只能保證16位),導(dǎo)致提交的id和數(shù)據(jù)庫中的id不一致。 2、 問題實現(xiàn) 如何解決這個問題? 我們可以在服務(wù)端給頁面響應(yīng)json數(shù)據(jù)時進行處理,將long型數(shù)據(jù)統(tǒng)一轉(zhuǎn)為String字符串 3、具體代碼實現(xiàn)–對象

    2024年02月16日
    瀏覽(365)
  • 后端long類型數(shù)據(jù)在前端產(chǎn)生精度損失

    后端我們常常會用Long類型的數(shù)據(jù)作為ID,例如用雪花算法生成唯一ID java中l(wèi)ong類型的取值范圍 (-9,223,372,036,854,775,808)(9,223,372,036,854,775,807)。有19位數(shù)字 JavaScript的Number類型是浮點數(shù)類型,它可以表示的整數(shù)范圍是從(-9,007,199,254,740,992)到2^53(9,007,199,254,740,992)只有16位數(shù)

    2024年02月16日
    瀏覽(95)
  • 前端計算數(shù)字精度丟失問題解決方法記錄

    在日常一些需求中,總會遇到一些需要前端進行手動計算的場景,那么這里需要優(yōu)先考慮的則是數(shù)字精度問題!具體請看下面截圖 如圖所示,在JavaScript進行浮點型數(shù)據(jù)計算當(dāng)中,會出現(xiàn)計算結(jié)果“不正確”的現(xiàn)象。 我們知道浮點型數(shù)據(jù)類型主要有:單精度float、雙精度doub

    2024年02月05日
    瀏覽(95)
  • 記錄--前端金額運算精度丟失問題及解決方案

    記錄--前端金額運算精度丟失問題及解決方案

    前端開發(fā)中難免會遇到價格和金額計算的需求,這類需求所要計算的數(shù)值大多數(shù)情況下是要求精確到小數(shù)點后的多少位。但是因為JS語言本身的缺陷,在處理浮點數(shù)的運算時會出現(xiàn)一些奇怪的問題,導(dǎo)致計算不精確。 本文嘗試從現(xiàn)象入手,分析造成這一問題原因,并總結(jié)和整

    2024年02月19日
    瀏覽(24)
  • 前端接收后端數(shù)據(jù)時,遇到精度丟失的問題

    之前項目開發(fā)過程中遇到過前端接收后端數(shù)據(jù)時,遇到精度丟失的問題。當(dāng)時進行了問題記錄,本篇博客針對于這個問題進行問題原因并進行多種方式解決這個問題。 前端接收后端返回的數(shù)據(jù)時出現(xiàn)精度丟失問題,通常是因為在數(shù)據(jù)傳輸過程中,數(shù)據(jù)類型被轉(zhuǎn)換為了 JavaScr

    2024年02月02日
    瀏覽(97)
  • 如何解決前端傳遞數(shù)據(jù)給后端時精度丟失問題

    如何解決前端傳遞數(shù)據(jù)給后端時精度丟失問題

    有時候我們在進行修改操作時,發(fā)現(xiàn)修改既不報錯也不生效。我們進行排查后發(fā)現(xiàn)服務(wù)器端將數(shù)據(jù)返回給前端時沒有出錯,但是前端js將數(shù)據(jù)進行處理時卻出錯了,因為id是Long類型的,而js在處理后端返回給前端的Long類型數(shù)據(jù)時只能處理前16位,后3位進行了四舍五入操作,例

    2024年02月09日
    瀏覽(166)
  • 如何完美解決前端數(shù)字計算精度丟失與數(shù)字格式化問題?

    大家好,我是木瓜太香,做前端開發(fā)經(jīng)常會遇到數(shù)字計算精度丟失的問題,和數(shù)字格式化的麻煩問題,好不容易找到了可以解決這些問題的庫結(jié)果用起來不夠方便,例如 bignumber.js decimal.js 等編寫體驗不好,這篇文章來幫助你完美解決這些問題 接下來我們根據(jù)以下兩個問題展

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包