Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 8278|Odpověď: 1

[JavaScript] Front-end JS řeší problém ztráty přesnosti serializace JSON

[Kopírovat odkaz]
Zveřejněno 13.02.2022 14:37:43 | | | |
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ímOdpověď

(Konec)




Předchozí:[Skutečný boj]. NET/C# exportuje cache pomocí StackExchange.Redis fuzzy query
Další:[Praxe] Java nemůže zachytit vlastní výjimky pomocí hutool reflection
Zveřejněno 13.02.2022 16:28:40 |
Přišel se znovu učit...
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com