Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 8278|Odgovoriti: 1

[JavaScript] Front-end JS reši problem izgube natančnosti serializacije JSON

[Kopiraj povezavo]
Objavljeno na 13. 02. 2022 14:37:43 | | | |
Zahteve: Naredil sem spletno stran za razčlenjevanje jwt, ko ima vsebina jwt dolg tip, uporaba privzete metode JSON za razčlenjevanje povzroči izgubo natančnosti, kot je prikazano na spodnji sliki:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript ima le eno vrsto števila: Number, Number je število s plavajočo vejico z dvojno natančnostjo, in za razliko od mnogih drugih programskih jezikov JavaScript ne določa različnih vrst števil, kot so cela števila, kratka, dolga, plavajoča vejica itd. Zato v JavaScriptu števila niso razdeljena na celoštevilske in plavajoče vejice, vsa števila pa so tipa s plavajočo vejico.

Pri izražanju celega števila lahko Number predstavlja celoštevilski razpon [−2 na potenco 53, 2 na potenco 253]. Ker ima Number 8 bajtov in 64 bitov, vključno z 1 predznakom, 11 eksponentnimi biti in 52 mantisinimi števkami.

Lahko uporabite Number.MAX_SAFE_INTEGER in Number.MIN_SAFE_INTEGER za ogled največjih in minimalnih varnostnih celih števil

Ko backend vmesnik vrne polje tipa long, frontend uporabi JSON.parse(text) za deserializacijo prikaza, kar povzroči napako prikaza, rešitev pa je, da backend vmesnik pretvori polje type long v string type in ga vrne.

lossless-json projekt, ki razčlenjuje JSON brez tveganja izgube številčnih informacij. GitHub naslov:Prijava do hiperpovezave je vidna.

PredvsemKlonirajte projekt lossless-jsonza gradnjo združene in minifikirane knjižnice (ES5, PC mora namestiti node.js) in najprej namestiti odvisnosti:

Nato prevedite takole:



./dist/lossless-json.js To bo ustvarilo paket združljivosti z ES5, ki ga je mogoče zagnati v brskalniku in node.js.

Testirano preko konzole brskalnika na naslednji način:



Spremenite projektno kodo,Predstavite lossless-json.js datoteke, ki imenuje LosslessJSON za serializacijo in deserializacijo JSON,Odpravil sem težavo z izgubo natančnosti, kot je prikazano na spodnji sliki:

naj json = LosslessJSON.parse('{"foo":"bar"}'); {FOO: 'Bar'}
naj bo besedilo = LosslessJSON.stringify(json);        '{"foo":"bar"}'



Naslov testa:Prijava do hiperpovezave je vidna.

Na koncu priložite prevedeno lossless-json.js datoteko:
Turisti, če želite videti skrito vsebino te objave, prosimOdgovoriti

(Konec)




Prejšnji:[Dejanski boj]. NET/C# izvozi predpomnilnik z uporabo StackExchange.Redis zamegljena poizvedba
Naslednji:[Vaja] Java ne more ujeti prilagojenih izjem z uporabo hutool refleksije
Objavljeno na 13. 02. 2022 16:28:40 |
Pridi se znova učiti...
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com