Anforderungen: Ich habe eine Online-Parsing-Seite für jwt erstellt; wenn der jwt-Inhalt eine lange Schrift hat, führt die Verwendung der Standard-JSON-Methode zum Parsen zu einem Genauigkeitsverlust, wie in der untenstehenden Abbildung gezeigt:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript hat nur einen Zahlentyp: Number, Number ist eine Gleitkommazahl mit doppelter Genauigkeit, und im Gegensatz zu vielen anderen Programmiersprachen definiert JavaScript keine verschiedenen Zahlentypen, wie z. B. ganze Zahlen, kurz, lang, Gleitkommazahlen usw. Daher werden in JavaScript Zahlen nicht in ganzzahlige oder Gleitkommatypen unterteilt, sondern alle Zahlen sind Gleitkommatypen.
Beim Ausdruck einer ganzen Zahl kann die Zahl einen ganzzahligen Bereich von [−2 bis zur Potenz von 53, 2 bis zur Potenz von 253] darstellen. Denn Number hat 8 Bytes und 64 Bits, darunter 1 Zeichenbit, 11 exponentielle Bits und 52 Mantissa-Ziffern.
Sie können Number.MAX_SAFE_INTEGER und Number.MIN_SAFE_INTEGER verwenden, um die maximalen und minimalen Sicherheitszahlen anzuzeigen。
Wenn die Backend-Schnittstelle ein Feld des Typs long zurückgibt, verwendet das Frontend JSON.parse(text), um die Darstellung zu deserialisieren, was zu einem Anzeigefehler führt, und die Lösung besteht darin, dass die Backend-Schnittstelle das Feld von Typ long in String-Typ umwandelt und zurückgibt.
verlustlos-JSON-Projekt, das JSON ohne das Risiko parst, numerische Informationen zu verlieren. GitHub-Adresse:Der Hyperlink-Login ist sichtbar.
ZuallererstKlonen Sie das verlustfreie JSON-Projektum eine gebündelte und verkleinerte Bibliothek (ES5, PC muss node.js installieren) zu erstellen und zuerst die Abhängigkeiten zu installieren:
Dann kompiliere wie folgt:
./dist/lossless-json.js Dies erzeugt ein ES5-Kompatibilitätspaket, das im Browser ausgeführt werden kann und node.js.
Getestet über die Browser-Konsole wie folgt:
Ändere den Projektcode,Einführung lossless-json.js Dateien, wobei LosslessJSON für JSON-Serialisierung und Deserialisierung aufgerufen wird,Problem des Genauigkeitsverlusts behoben, wie in der untenstehenden Abbildung dargestellt:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'Bar'} let text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Testadresse:Der Hyperlink-Login ist sichtbar.
Fügen Sie schließlich die kompilierte lossless-json.js-Datei an:
Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitte Antwort (Ende) |