Követelmények: Készítettem egy online elemző oldalt a jwt-hez, amikor a jwt tartalom hosszú betűtípusú, az alapértelmezett JSON módszer szerinti elemzés pontosságvesztést okoz, ahogy az alábbi ábrán is látható:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
A JavaScriptnek csak egy számtípusa van: Szám, Szám egy dupla pontosságú lebegőpontos szám, és ellentétben sok más programozási nyelvvel, a JavaScript nem definiál különböző számtípusokat, mint az egész számok, rövid, hosszú, lebegős szám stb. Ezért a JavaScriptben a számokat nem osztják egész számokra és lebegőpontos típusokra, és minden szám lebegőpontos típus.
Egész szám kifejezésekor a szám egy egész számtartományt képviselhet, amely [−2 és 53 hatványa, 2 és 253 hatványa]. Mert a Number 8 bájtból és 64 bitből áll, beleértve 1 jelölt bitet, 11 exponenciális bitet és 52 mantissa számjegyet.
Használhatod a Number.MAX_SAFE_INTEGER és Number.MIN_SAFE_INTEGER segítségével megtekintheted a maximális és minimális biztonsági egész számokat。
Amikor a backend interfész hosszú típusú mezőt ad vissza, a frontend a JSON.parse(text) segítségével deserializálja a kijelzőt, ami megjelenítési hibát okoz, és a megoldás az, hogy a backend interfész átalakítja a hosszú típusú mezőt string típusra, és visszaadja azt.
veszteségmentes-json projekt, amely a JSON-t úgy értelmezi, hogy nem veszítenénk a numerikus információkat. GitHub cím:A hiperlink bejelentkezés látható.
ElsőkéntKlónozd a veszteségmentes-json projektetegy csomagolt és minírozott könyvtár (ES5, a PC-nek node.js kell telepítenie), és először a függőségek telepítését:
Ezután fordítsd össze a következőket:
./dist/lossless-json.js Ez egy ES5 kompatibilitási csomagot generál, amelyet böngészőben és node.js futtathat.
A böngészőkonzolon tesztelték az alábbiakkal:
Módosítsd a projektkódot,A lossless-json.js fájlok bevezetése, a LosslessJSON-t hívva a JSON serializációért és deserializációért,Javítottuk a pontosságvesztési problémát, ahogy az alábbi ábrán látható:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} let text = LosslessJSON.stringify(json); '{"foo":"bar"}'
A tesztcím:A hiperlink bejelentkezés látható.
Végül csatoljuk a lefordított lossless-json.js fájlt:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlek Válasz (Vége) |