Long類型返回前端丟失精度最佳解決辦法
前言
今天又遇到了一個(gè)問題,所以記錄一下解決方法,希望能幫到遇到同樣問題的朋友。
解決辦法
先說一下解決辦法吧
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long zkShopId;在你的實(shí)體類找到這個(gè)字段,在字段上面添加:@JsonFormat(shape = JsonFormat.Shape.STRING)就好了。
再來講講原因
@JsonFormat(shape = JsonFormat.Shape.STRING)作用就是將JSON數(shù)據(jù)的此字段格式化為字符串類型,保證前端超過17位不會(huì)出現(xiàn)精度丟失問題!
由于JavaScript中Number類型的自身原因,并不能完全表示Long型的數(shù)字,在Long長(zhǎng)度大于17位時(shí)會(huì)出現(xiàn)精度丟失的問題。
所以,不應(yīng)該使用ResponseBean<Long>,應(yīng)該使用ResponseBean<String>,轉(zhuǎn)換成字符串類型的。
我后端id是Long類型,數(shù)據(jù)庫(kù)是bigint類型,id是由雪花算法產(chǎn)生的唯一ID,在后端id傳給前端的時(shí)候,并沒有出錯(cuò),而是發(fā)現(xiàn)根據(jù)id查詢的時(shí)候,怎么查詢都是空的,然后調(diào)試的時(shí)候就發(fā)現(xiàn)了

好了,就記錄到這吧,希望能幫到你哦!
評(píng)論
圖片
表情
