Krav: Jag skapade en online-parsningssida för jwt, när jwt-innehållet har lång typ, kommer användning av standardmetoden JSON för tolkning att orsaka en förlust av noggrannhet, som visas i figuren nedan:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript har bara en taltyp: Number, Number är ett dubbelprecisions flyttalstal, och till skillnad från många andra programmeringsspråk definierar JavaScript inte olika typer av tal, såsom heltal, kort, lång, flyttal med mera. Därför delas inte tal i JavaScript in i heltalstyper och flyttalstyper, och alla tal är flyttalstyper.
När ett heltal uttrycks kan Tal representera ett heltalsintervall av [−2 till potensen 53, 2 till potensen av 253]. Eftersom Number har 8 byte och 64 bitar, inklusive 1 teckenbit, 11 exponentiella bitar och 52 mantissa-siffror.
Du kan använda Number.MAX_SAFE_INTEGER och Number.MIN_SAFE_INTEGER för att se de maximala och minimala säkerhetsheltal。
När backend-gränssnittet returnerar ett fält av typ long använder frontend JSON.parse(text) för att deserialisera displayen, vilket orsakar ett visningsfel, och lösningen är att backend-gränssnittet konverterar fältet av typ long till strängtyp och returnerar det.
lossless-json-projekt, som parsar JSON utan risk att förlora numerisk information. GitHub-adress:Inloggningen med hyperlänken är synlig.
Först av alltKlona lossless-json-projektetför att bygga ett medföljande och minifierat bibliotek (ES5, PC måste installera node.js), och först installera beroendena:
Kompilera sedan enligt följande:
./dist/lossless-json.js Detta genererar ett ES5-kompatibilitetspaket som kan köras i webbläsaren och node.js.
Testat via webbläsarkonsolen enligt följande:
Modifiera projektkoden,Introducera lossless-json.js filer, som anropar LosslessJSON för JSON-serialisering och deserialisering,Fixade problemet med förlust av noggrannhet, som visas i figuren nedan:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} let text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Testadress:Inloggningen med hyperlänken är synlig.
Slutligen, bifoga den kompilerade lossless-json.js-filen:
Turister, om ni vill se det dolda innehållet i detta inlägg, snälla Svar (Slut) |