Απαιτήσεις: Έφτιαξα μια διαδικτυακή σελίδα ανάλυσης για το jwt, όταν το περιεχόμενο jwt έχει μεγάλο τύπο, η χρήση της προεπιλεγμένης μεθόδου JSON για ανάλυση θα προκαλέσει απώλεια ακρίβειας, όπως φαίνεται στο παρακάτω σχήμα:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
Η JavaScript έχει μόνο έναν τύπο αριθμού: Αριθμός, Αριθμός είναι ένας αριθμός κινητής υποδιαστολής διπλής ακρίβειας και σε αντίθεση με πολλές άλλες γλώσσες προγραμματισμού, η JavaScript δεν ορίζει διαφορετικούς τύπους αριθμών, όπως ακέραιους αριθμούς, βραχείς, μεγάλους, κινητής υποδιαστολής κ.λπ. Επομένως, στη JavaScript, οι αριθμοί δεν χωρίζονται σε ακέραιους τύπους και τύπους κινητής υποδιαστολής και όλοι οι αριθμοί είναι τύποι κινητής υποδιαστολής.
Όταν εκφράζουμε έναν ακέραιο, ο Αριθμός μπορεί να αντιπροσωπεύει ένα ακέραιο εύρος [−2 στη δύναμη του 53, 2 στη δύναμη του 253]. Επειδή ο αριθμός έχει 8 byte και 64 bit, συμπεριλαμβανομένου 1 bit προσήμου, 11 εκθετικών bit και 52 ψηφίων mantissa.
Μπορείτε να χρησιμοποιήσετε το Number.MAX_SAFE_INTEGER και το Number.MIN_SAFE_INTEGER για να δείτε τους μέγιστους και ελάχιστους ακέραιους αριθμούς ασφαλείας。
Όταν η διεπαφή backend επιστρέφει ένα πεδίο τύπου long, το frontend χρησιμοποιεί το JSON.parse(text) για να αποσειριοποιήσει την οθόνη, κάτι που θα προκαλέσει σφάλμα εμφάνισης και η λύση είναι ότι η διεπαφή backend μετατρέπει το πεδίο τύπου long σε τύπο συμβολοσειράς και το επιστρέφει.
Lossless-JSON project, αναλύοντας το JSON χωρίς τον κίνδυνο απώλειας αριθμητικών πληροφοριών. Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Πρώτα απ' όλαΚλωνοποιήστε το έργο json χωρίς απώλειεςγια να δημιουργήσετε μια ομαδοποιημένη και ελαχιστοποιημένη βιβλιοθήκη (ES5, ο υπολογιστής πρέπει να εγκαταστήσει node.js) και πρώτα να εγκαταστήσετε τις εξαρτήσεις:
Στη συνέχεια, μεταγλωττίστε ως εξής:
./dist/lossless-json.js Αυτό θα δημιουργήσει ένα πακέτο συμβατότητας ES5 που μπορεί να εκτελεστεί στο πρόγραμμα περιήγησης και node.js.
Δοκιμασμένο μέσω της κονσόλας του προγράμματος περιήγησης ως εξής:
Τροποποιήστε τον κώδικα του έργου,Εισαγωγή lossless-json.js αρχείων, καλώντας το LosslessJSON για σειριοποίηση και αποσειριοποίηση JSON,Διορθώθηκε το πρόβλημα απώλειας ακρίβειας, όπως φαίνεται στο παρακάτω σχήμα:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'μπαρ'} έστω κείμενο = LosslessJSON.stringify(json); '{"foo":"μπαρ"}'
Διεύθυνση δοκιμής:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Τέλος, επισυνάψτε το μεταγλωττισμένο αρχείο lossless-json.js:
Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώ Απάντηση (Τέλος) |