日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

后端Long類型傳到前端精度丟失的問題

作者:大大。 更新時間: 2023-10-16 編程語言

問題出現:后端的Java Bean的id屬性是用的Long類型對應數據庫主鍵使用bigint類型,當使用JSON方式傳遞該數據給前端時,前端接收到的數據末尾會變成0。(發生的精度丟失問題)
問題原因:Java中的long能表示的范圍比js中number大,也就意味著部分數值在js中存不下(變成不準確的值),導致Id最后幾位直接變成了0。
?

?

?前端接收打印:

?解決方案1(后端):將后端的id變成字符串類型,前端以字符串的方式接收就不會有精度丟失


解決方案2(前端):前端方案1前端引入 json-bigint,

   npm install json-bigint

解決方案3(前端):在axios封裝的地方,transformResponse 在傳遞給 then/catch 前,允許修改響應數據。

?修改axios的源碼,在node_modules/axios/lib/default.js中找到transformResponse 將其內容改為:

transformResponse: [function transformResponse(data) {
    /*eslint no-param-reassign:0*/
    if (typeof data === 'string') {
      try {
        data = JSON.parse(data);
      } catch (e) { /* Ignore */ }
    }
    return data;
  }],

解決方案4(前端):

后臺傳到前臺時,Long類型數據,轉為String類型。可以直接操作傳回的對象數據,toString()該long類型數據。(推薦)

原文鏈接:https://blog.csdn.net/weixin_43923808/article/details/131770665

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新