Krav: Jeg lavede en online parsing-side for jwt, når jwt-indholdet har lang skrift, vil brug af standard JSON-metoden til parsing medføre tab af nøjagtighed, som vist i figuren nedenfor:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript har kun én taltype: Number, Number er et flydende kommataltal med dobbelt præcision, og i modsætning til mange andre programmeringssprog definerer JavaScript ikke forskellige typer tal, såsom heltal, kort, lang, flydende kommatal osv. Derfor er tal i JavaScript ikke opdelt i heltalstyper og flydende kommatal-typer, og alle tal er flydende komma-typer.
Når man udtrykker et heltal, kan Tal repræsentere et heltalsinterval på [−2 til potensen af 53, 2 til potensen af 253]. Fordi Number har 8 bytes og 64 bits, inklusive 1 tegnbit, 11 eksponentielle bits og 52 mantissa-cifre.
Du kan bruge Number.MAX_SAFE_INTEGER og Number.MIN_SAFE_INTEGER til at se de maksimale og minimale sikkerhedsheltal。
Når backend-interfacet returnerer et felt af type long, bruger frontend JSON.parse(text) til at deserialisere displayet, hvilket vil forårsage en displayfejl, og løsningen er, at backend-interfacet konverterer feltet af type long til strengtype og returnerer det.
tabsfrit-JSON-projekt, hvor JSON blev parset uden risiko for at miste numerisk information. GitHub-adresse:Hyperlink-login er synlig.
Først og fremmestKlon lossless-json-projektetfor at bygge et medfølgende og minificeret bibliotek (ES5, PC skal installere node.js), og først installere afhængighederne:
Kompilér derefter som følger:
./dist/lossless-json.js Dette vil generere en ES5-kompatibilitetspakke, der kan køres i browseren og node.js.
Testet via browserens konsol som følger:
Ændr projektkoden,Introducer lossless-json.js filer, der kalder LosslessJSON til JSON-serialisering og deserialisering,Løste problemet med tab af nøjagtighed, som vist i figuren nedenfor:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} let text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Testadresse:Hyperlink-login er synlig.
Endelig vedhæfter du den kompilerede lossless-json.js-fil:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar (Slut) |