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, prosim Odgovoriti (Konec) |