最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于json-bigint處理大數(shù)字問題

 更新時間:2024年05月23日 17:10:02   作者:flyyy菜鳥  
這篇文章主要介紹了關于json-bigint處理大數(shù)字問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

json-bigint處理大數(shù)字問題

js里面的整數(shù)有安全范圍,即最大能顯示的范圍,超過了這個范圍可能會精度丟失

Number.MAX_SAFE_INTEGER  //值為9007199254740991

json-bigint:可以像JSON.parse一樣方便轉換

用法:

//導入
import JSONbig from 'json-bigint'

//可以通過axios的transformResponse方法,這個方法的作用是在傳遞給then/catch前,允許修改響應數(shù)據(jù)

//axios在這里默認把響應體從json字符串轉成了js對象
axios.defaults.transformResponse = [function (data) {
console.log(data)//這里的data是字符串,在這個字符串的是沒有丟失精度的,所以需要在這里先把精度調好

	try {
	//作用1:把json字符串轉為js對象
	//作用2:把里面的大數(shù)字做安全處理
	 return JSONbig.parse(data)
	}catch(){
	return data;
	}
	//return data;
}]

//如果不寫這個方法,返回的數(shù)據(jù)是自動就轉為json對象的了,如果寫了,就要自己轉為對象,即return JSON.parse(data)

注意:

alert會自動調用了toString()方法

只要經過json-bigint轉換后的id,直接toString(),就能得到真實的id

超大整型數(shù)字處理json-bigint的應用

1.json-bigint的作用和原理

json-bigint的作用:

項目中如果使用一些超出javascript語言限制的超大整型數(shù)字信息,該數(shù)字會變形為其他信息,為了避免產生問題,可以通過json-bigint做轉換,使得超大整型數(shù)字可以正常使用,這就是json-bigint的作用。

情景:

  • 后端服務器返回的文章id已經大大超過了js語言可以表達的最大整型范疇,因而直接使用的時候會發(fā)生變型:

例如:

  • 本質id為:1215831343376629760
  • 變型后為:1215831343376629800
console.log(1215831343376629760)    // 輸出為:1215831343376629800
  • javascript中可以表達的最大整型可以通過如下代碼獲得:
console.log( Number.MAX_SAFE_INTEGER )
// 輸出:9007199254740991

json-bigint的原理:

json-bigint會把超大整型的數(shù)字信息,拆分為小段信息存儲到數(shù)組的各個元素中,待使用的時候再拼接到一起變?yōu)樽址?/p>

github網站相關介紹: https://github.com/sidorares/json-bigint

json-bigint使用示例:

var JSONBig = require('json-bigint');  // 需要先安裝 npm i json-bigint
var str = '{ "value" : 9223372036854775807, "v2": 123 }';

var obj = JSONBig.parse(str) // 字符串--->對象
console.log(obj.value) // 9223372036854775807(正確)

var obj2 = JSON.parse(str) // 字符串--->對象
console.log(obj2.value) // 9223372036854776000(錯誤)

結論:

  • json-bigint會對一個包含超大整型信息的“字符串”做轉換處理變?yōu)閷ο?,這個對象可以獲得正確的超大整型數(shù)字信息。

2.超大整型數(shù)字的具體處理

示例:

  • 應用超大整型數(shù)字處理技術對接口返回的文章id信息做處理,使得可以被正確接收和使用。

  • 服務器給客戶端返回數(shù)據(jù)的第一手處理者是 “轉換器( transformResponse )”,轉換器處理完畢再交給響應攔截器使用,故要對超大整型數(shù)字信息做處理,下手點是"轉換器"(響應攔截器獲得數(shù)據(jù)已經是變形后的內容了)

本質上:服務器返回信息的類型是“字符串”,要經過轉換器做JSONbig.parse()轉化處理,所以響應攔截器接收到的是對象。

步驟:

1.安裝工具依賴包:

npm i json-bigint

2.在src/utils/ax.js中引入json-bigint模塊,對服務器返回的信息做處理,具體通過axios的 “數(shù)據(jù)轉換” 機制實現(xiàn):

import JSONbig from 'json-bigint'

// 服務器端返回,數(shù)據(jù)轉換器,應用
axios.defaults.transformResponse = [function (data) {
  // data的返回形式有兩種
  // 1. 實體字符串
  // 2. 空字符串(不能轉的)
  // JSONbig.parse針對超大整型進行處理,其他信息不給處理
  if (data) {
    return JSONbig.parse(data)
  }
  return data
}]

注意:

1.上述數(shù)據(jù)轉換一定要設置else,以便對空字符串做處理,因為服務器有時候會返回空字符串信息。

2. json-bigint處理的是字符串類型的信息,超大整型數(shù)字給處理,普通信息不給與處理。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue用mixin合并重復代碼的實現(xiàn)

    Vue用mixin合并重復代碼的實現(xiàn)

    這篇文章主要介紹了Vue用mixin合并重復代碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • vue?scoped與深度選擇器deep的原理分析

    vue?scoped與深度選擇器deep的原理分析

    這篇文章主要介紹了vue?scoped與深度選擇器deep的原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 前端vue2+js+springboot實現(xiàn)excle導入優(yōu)化解決方案

    前端vue2+js+springboot實現(xiàn)excle導入優(yōu)化解決方案

    這篇文章主要介紹了前端vue2+js+springboot實現(xiàn)excle導入優(yōu)化的相關資料,前端優(yōu)化包括使用ElementUI組件和封裝的JS解析函數(shù),后端重點在于多線程處理,通過定義線程安全技術及數(shù)據(jù)分片實現(xiàn)高效導入,需要的朋友可以參考下
    2025-11-11
  • Vue中的components組件與props的使用解讀

    Vue中的components組件與props的使用解讀

    這篇文章主要介紹了Vue中的components組件與props的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 解決vue單頁使用keep-alive頁面返回不刷新的問題

    解決vue單頁使用keep-alive頁面返回不刷新的問題

    下面小編就為大家分享一篇解決vue單頁使用keep-alive頁面返回不刷新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解在vue-cli項目中安裝node-sass

    詳解在vue-cli項目中安裝node-sass

    本篇文章主要介紹了詳解在vue-cli項目中安裝node-sass ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue如何監(jiān)聽瀏覽器主動刷新

    vue如何監(jiān)聽瀏覽器主動刷新

    這篇文章主要介紹了vue如何監(jiān)聽瀏覽器主動刷新,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 快速解決vue-cli在ie9+中無效的問題

    快速解決vue-cli在ie9+中無效的問題

    今天小編就為大家分享一篇快速解決vue-cli在ie9+中無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3?watchEffect的使用教程和相關概念

    Vue3?watchEffect的使用教程和相關概念

    Vue?3?引入了?Composition?API,其中?watchEffect?是一個非常強大的工具,用于響應式地追蹤依賴項的變化,本文將詳細介紹?watchEffect?的使用方法和相關概念,文中有詳細的代碼供大家參考,需要的朋友可以參考下
    2024-08-08
  • 深入理解Vue 的鉤子函數(shù)

    深入理解Vue 的鉤子函數(shù)

    這篇文章主要介紹了Vue 的鉤子函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論

兴山县| 渑池县| 涞源县| 三亚市| 孟州市| 龙陵县| 彝良县| 兴和县| 凌源市| 普兰店市| 信阳市| 德安县| 塔河县| 本溪市| 金秀| 南溪县| 海丰县| 龙山县| 铅山县| 施甸县| 南和县| 邛崃市| 五台县| 龙游县| 宁远县| 措勤县| 耿马| 广宁县| 宁强县| 泾源县| 林甸县| 南安市| 遂平县| 鲁山县| 郴州市| 新巴尔虎左旗| 龙里县| 喀什市| 灌云县| 平乡县| 苗栗市|