Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 8278|Svar: 1

[JavaScript] Front-end JS løser problemet med tab af JSON-serialiseringsnøjagtighed

[Kopier link]
Opslået på 13/02/2022 14.37.43 | | | |
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 venligSvar

(Slut)




Tidligere:[Egentlig kamp]. NET/C# eksporterer cachen ved hjælp af StackExchange.Redis fuzzy query
Næste:[Practice] Java kan ikke fange brugerdefinerede undtagelser ved hjælp af Hutool Reflection
Opslået på 13/02/2022 16.28.40 |
Kom for at lære igen...
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com