Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 8278|Antwort: 1

[JavaScript] Frontend-JS löst das Problem des Verlusts der JSON-Serialisierungsgenauigkeit

[Link kopieren]
Veröffentlicht am 13.02.2022 14:37:43 | | | |
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, bitteAntwort

(Ende)




Vorhergehend:[Tatsächlicher Kampf]. NET/C# exportiert den Cache mit StackExchange.Redis Fuzzy-Abfrage
Nächster:[Übung] Java kann benutzerdefinierte Ausnahmen nicht mit Hutool-Reflexion fangen
Veröffentlicht am 13.02.2022 16:28:40 |
Komm, um es wieder zu lernen...
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com