解決前后端交互數(shù)據(jù)出現(xiàn)精度丟失的多種方式
問題:
發(fā)送Ajax請求,請求后端接口創(chuàng)建訂單并且返回訂單號出現(xiàn)訂單號精度丟失的情況
情景復(fù)現(xiàn):
前端發(fā)送請求到后端接口

我們前端打印訂單號到控制臺查看,前端返回訂單號:1510826214531666000

查看數(shù)據(jù)庫訂單號:1510826214531665920

比較2個單號區(qū)別
可以明顯看出后面幾位數(shù)據(jù)丟失,這樣就存在一個問題,我前端通過該訂單號無法獲取到正確的訂單
數(shù)據(jù),就會出現(xiàn)訂單已經(jīng)保存成功但是查詢不到的問題

解決方式
問題出在前端的Long長度,沒有后端Long的長度長這樣,前端獲取到數(shù)據(jù)后會對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,發(fā)現(xiàn)長度大于前端的Long最大長度就會精度丟失,那么我們應(yīng)該直接讓他返回字符串的數(shù)據(jù)不讓他轉(zhuǎn)換!
那么就會有2種解決方案
1.前端解決
請求的時候添加以下代碼,這樣前端接受就不會進(jìn)行轉(zhuǎn)化

{
transformResponse: [
function (data){
return data;
}
]
}
發(fā)送請求我們在看下,打印返回的訂單查看

數(shù)據(jù)庫數(shù)據(jù)

可以看出沒有丟失精度

前端解決丟失完成
2.后端解決
我們更改后端實體類的值
通過@JsonFormat值把Long類型的值轉(zhuǎn)成String類型的值
@JsonFormat(shape =JsonFormat.Shape.STRING ) private Long orderId;// id

然后重啟后端代碼測試下,該接口由于后端返回的類型就是Long所以沒辦法使用這個方案
注意:
如果后端返回的是對象那么Id是Long類型的話可以通過@JsonFormat把對象的id從Long類型的轉(zhuǎn)換成String類型那么前端也不會出現(xiàn)精度丟失,如果單獨返回的數(shù)據(jù)類型一開始就是Long那么只能通過前端的方法解決
例如:
后端返回類型是Long那么只能改前端,不然就要更改后端返回為String,為了不影響后端業(yè)務(wù)盡可能使用前端的方式解決

以上就是解決前后端交互數(shù)據(jù)出現(xiàn)精度丟失的多種方式的詳細(xì)內(nèi)容,更多關(guān)于前后端數(shù)據(jù)交互精度丟失的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解析dom中的children對象數(shù)組元素firstChild,lastChild的使用
以下是對dom中的children對象數(shù)組元素firstChild,lastChild的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07
chrome下判斷點擊input上標(biāo)簽還是其余標(biāo)簽的實現(xiàn)方法
下面小編就為大家?guī)硪黄猚hrome下判斷點擊input上標(biāo)簽還是其余標(biāo)簽的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
將html頁面保存成圖片,圖片寫入pdf的實現(xiàn)方法(推薦)
下面小編就為大家?guī)硪黄獙tml頁面保存成圖片,圖片寫入pdf的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
promise和co搭配生成器函數(shù)方式解決js代碼異步流程的比較
這篇文章主要介紹了promise和co搭配生成器函數(shù)方式解決js代碼異步流程的比較,在es6中引入的原生Promise為js的異步回調(diào)問題帶來了一個新的解決方式co模塊搭配Generator函數(shù)的同步寫法,更是將js的異步回調(diào)帶了更優(yōu)雅的寫法。感興趣的小伙伴們可以參考一下2018-05-05
JavaScript函數(shù)防抖與函數(shù)節(jié)流的定義及使用詳解
這篇文章主要為大家詳細(xì)介紹一下JavaScript中函數(shù)防抖與函數(shù)節(jié)流的定義及使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JS有一定幫助,需要的可以參考一下2022-08-08
JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實現(xiàn)方法
json數(shù)據(jù)在ajax實現(xiàn)異步交互時起到了很重要的作用,他可以返回請求的數(shù)據(jù),然后利用客戶端的js進(jìn)行解析,這一點體現(xiàn)出js的強(qiáng)大,本文介紹JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實現(xiàn)方法,需要了解的朋友可以參考下2012-12-12

