Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 8278|Svare: 1

[JavaScript] Front-end JS løser problemet med tap av JSON-serialiseringsnøyaktighet

[Kopier lenke]
Publisert på 13.02.2022 14:37:43 | | | |
Krav: Jeg laget en nettbasert parsing-side for jwt, når jwt-innholdet har lang type, vil bruk av standard JSON-metoden for å parse føre til tap av nøyaktighet, som vist i figuren nedenfor:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript har bare én talltype: Number, Number er et flyttall-tall med dobbel presisjon, og i motsetning til mange andre programmeringsspråk definerer ikke JavaScript ulike typer tall, som heltall, kort, lang, flyttall, osv. Derfor deles ikke tall i JavaScript inn i heltallstyper og flyttallstyper, og alle tall er flyttallstyper.

Når man uttrykker et heltall, kan Tall representere et heltallsområde på [−2 til potensen av 53, 2 til potensen av 253]. Fordi Number har 8 byte og 64 biter, inkludert 1 tegnbit, 11 eksponentielle biter og 52 mantissa-sifre.

Du kan bruke Number.MAX_SAFE_INTEGER og Number.MIN_SAFE_INTEGER for å se maksimale og minimale sikkerhetsheltall

Når backend-grensesnittet returnerer et felt av type long, bruker frontend JSON.parse(text) for å deserialisere visningen, noe som vil forårsake en visningsfeil, og løsningen er at backend-grensesnittet konverterer feltet av type long til streng-type og returnerer det.

lossless-JSON-prosjektet, som parser JSON uten risiko for å miste numerisk informasjon. GitHub-adresse:Innloggingen med hyperkoblingen er synlig.

Først og fremstKlon lossless-json-prosjektetfor å bygge et samlet og minifisert bibliotek (ES5, PC må installere node.js), og først installere avhengighetene:

Deretter kompilerer du som følger:



./dist/lossless-json.js Dette vil generere en ES5-kompatibilitetspakke som kan kjøres i nettleseren og node.js.

Testet via nettleserkonsollen som følger:



Endre prosjektkoden,Introdusere lossless-json.js filer, kaller LosslessJSON for JSON-serialisering og deserialisering,Fikset problemet med tap av nøyaktighet, som vist i figuren nedenfor:

let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'}
let text = LosslessJSON.stringify(json);        '{"foo":"bar"}'



Testadresse:Innloggingen med hyperkoblingen er synlig.

Til slutt, legg ved den kompilerte lossless-json.js-filen:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snillSvare

(Slutt)




Foregående:[Faktisk kamp]. NET/C# eksporterer cachen ved hjelp av StackExchange.Redis fuzzy-spørring
Neste:[Øvelse] Java kan ikke fange tilpassede unntak ved bruk av Hutool-refleksjon
Publisert på 13.02.2022 16:28:40 |
Kom for å lære igjen...
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com