Požiadavky: Vytvoril som online stránku na parsovanie jwt, keď má obsah jwt dlhý typ, použitie predvolenej metódy JSON na parsovanie spôsobí stratu presnosti, ako je znázornené na obrázku nižšie:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript má len jeden typ čísla: Number, Number je dvojnásobne presné číslo s pohyblivou desatinnou čiarkou a na rozdiel od mnohých iných programovacích jazykov JavaScript nedefinuje rôzne typy čísel, ako sú celé čísla, krátke, dlhé, pohyblivé desatinné čísla a podobne. Preto v JavaScripte nie sú čísla rozdelené na celočíselné typy a typy s pohyblivou desatinnou čiarkou a všetky čísla sú typy s pohyblivou desatinnou čiarkou.
Pri vyjadrení celého čísla môže Number predstavovať celočíselný rozsah [−2 na mocninu 53, 2 na mocninu 253]. Pretože Number má 8 bajtov a 64 bitov, vrátane 1 znamienkového bitu, 11 exponenciálnych bitov a 52 mantisových číslic.
Môžete použiť Number.MAX_SAFE_INTEGER a Number.MIN_SAFE_INTEGER na zobrazenie maximálnych a minimálnych bezpečnostných celých čísel。
Keď backendové rozhranie vráti pole typu long, frontend použije JSON.parse(text) na deserializáciu zobrazenia, čo spôsobí chybu zobrazenia, a riešením je, že backendové rozhranie prevedie pole typu long na string type a vráti ho.
lossless-json projekt, parsovanie JSON bez rizika straty číselných informácií. GitHub adresa:Prihlásenie na hypertextový odkaz je viditeľné.
PredovšetkýmKlonujte projekt lossless-jsonna vytvorenie zbalenej a minifikovanej knižnice (ES5, PC musí nainštalovať node.js) a najskôr nainštalovať závislosti:
Potom skompilujte nasledovne:
./dist/lossless-json.js Toto vygeneruje balík kompatibilnosti s ES5, ktorý je možné spustiť v prehliadači a node.js.
Testované cez konzolu prehliadača nasledovne:
Upravte kód projektu,Predstavte lossless-json.js súbory, nazývajúc LosslessJSON pre serializáciu a deserializáciu JSON,Opravený problém so stratou presnosti, ako je znázornené na obrázku nižšie:
nech json = LosslessJSON.parse('{"foo":"bar"}'); {FOO: 'Bar'} nech text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Testovacia adresa:Prihlásenie na hypertextový odkaz je viditeľné.
Nakoniec pripojte skompilovaný lossless-json.js súbor:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď (Koniec) |