Požadavky: Vytvořil jsem online stránku pro parsování jwt, když má obsah jwt dlouhý typ, použití výchozí metody JSON pro analýzu způsobí ztrátu přesnosti, jak je znázorněno na obrázku níže:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript má pouze jeden typ čísla: Number, Number je dvojnásobně přesné číslo s plovoucí desetinnou čárkou a na rozdíl od mnoha jiných programovacích jazyků JavaScript nedefinuje různé typy čísel, jako jsou celá čísla, krátká, dlouhá, plovoucí desetinná čárka atd. Proto v JavaScriptu nejsou čísla rozdělena na celočíselné typy a typy s plovoucí desetinnou čárkou a všechna čísla jsou typy s plovoucí desetinnou čárkou.
Při vyjádření celého čísla může Number představovat celočíselný rozsah [−2 na mocninu 53, 2 na mocninu 253]. Protože Number má 8 bajtů a 64 bitů, včetně 1 znaménkového bitu, 11 exponenciálních bitů a 52 mantisových číslic.
Můžete použít Number.MAX_SAFE_INTEGER a Number.MIN_SAFE_INTEGER pro zobrazení maximálních a minimálních bezpečnostních celých čísel。
Když backendové rozhraní vrátí pole typu long, frontend použije JSON.parse(text) k deserializaci displeje, což způsobí chybu zobrazení, a řešením je, že backendové rozhraní převede pole typu long na string type a vrátí ho.
lossless-json, parsování JSON bez rizika ztráty číselných informací. Adresa GitHubu:Přihlášení k hypertextovému odkazu je viditelné.
Nejdřív ze všehoKlonujte projekt lossless-jsonpro vytvoření balíčkové a minifikované knihovny (ES5, PC musí nainstalovat node.js) a nejprve nainstalovat závislosti:
Poté zkompilujte následovně:
./dist/lossless-json.js Tím vygeneruje balíček kompatibility ES5, který lze spustit v prohlížeči a node.js.
Testováno přes konzoli prohlížeče následovně:
Upravte kód projektu,Představte lossless-json.js soubory, nazývající LosslessJSON pro serializaci a deserializaci JSON,Opraven problém se ztrátou přesnosti, jak je znázorněno na obrázku níže:
nech json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'Bar'} nech text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Testovací adresa:Přihlášení k hypertextovému odkazu je viditelné.
Nakonec přiložte zkompilovaný lossless-json.js soubor:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď (Konec) |