Exigences : J’ai créé une page d’analyse en ligne pour jwt, lorsque le contenu jwt a un caractère long, utiliser la méthode JSON par défaut pour analyser entraîne une perte de précision, comme montré dans la figure ci-dessous :
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript n’a qu’un seul type de nombre : Nombre, Nombre est un nombre à virgule flottante à double précision, et contrairement à de nombreux autres langages de programmation, JavaScript ne définit pas différents types de nombres, tels que les entiers, courts, longs, virgule flottante, etc. Ainsi, dans JavaScript, les nombres ne sont pas divisés en types entiers et types en virgule flottante, et tous les nombres sont des types en virgule flottante.
Lorsqu’on exprime un entier, le nombre peut représenter une plage d’entiers de [−2 à la puissance de 53, de 2 à la puissance de 253]. Parce que Number compte 8 octets et 64 bits, incluant 1 bit de signe, 11 bits exponentiels et 52 chiffres mantisses.
Vous pouvez utiliser Number.MAX_SAFE_INTEGER et Number.MIN_SAFE_INTEGER pour voir les entiers de sécurité maximal et minimum。
Lorsque l’interface backend retourne un champ de type long, le frontend utilise JSON.parse(text) pour désérialiser l’affichage, ce qui provoque une erreur d’affichage, et la solution est que l’interface backend convertit le champ de type long en type chaîne et le renvoie.
projet lossless-json, analyse JSON sans risque de perdre l’information numérique. Adresse GitHub :La connexion hyperlientérée est visible.
Tout d’abordCloner le projet lossless-jsonpour construire une bibliothèque groupée et minifiée (ES5, le PC doit installer node.js), et installer d’abord les dépendances :
Puis compilez comme suit :
./dist/lossless-json.js Cela générera un package de compatibilité ES5 qui pourra être exécuté dans le navigateur et node.js.
Testé via la console du navigateur comme suit :
Modifier le code du projet,Introduisez lossless-json.js fichiers, appelant LosslessJSON pour la sérialisation et la désérialisation JSON,Correction du problème de perte de précision, comme montré dans la figure ci-dessous :
soit json = LosslessJSON.parse('{"foo » :"bar"}') ; {foo : 'bar'} soit text = LosslessJSON.stringify(json) ; '{"foo » :"bar"}'
Adresse du test :La connexion hyperlientérée est visible.
Enfin, joignez le fichier lossless-json.js compilé :
Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaît Répondre (Fin) |