Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 8278|Risposta: 1

[JavaScript] Il front-end JS risolve il problema della perdita di accuratezza della serializzazione JSON

[Copiato link]
Pubblicato su 13/02/2022 14:37:43 | | | |
Requisiti: Ho creato una pagina di analisi online per jwt, quando il contenuto di jwt ha un tipo lungo, usare il metodo JSON predefinito per analizzar causa una perdita di accuratezza, come mostrato nella figura qui sotto:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript ha un solo tipo di numero: Number, Number è un numero a doppia precisione in virgola mobile e, a differenza di molti altri linguaggi di programmazione, JavaScript non definisce diversi tipi di numeri, come interi, brevi, lunghi, virgola mobile, ecc. Pertanto, in JavaScript, i numeri non sono divisi in tipi interi e tipi in virgola mobile, e tutti i numeri sono tipi in virgola mobile.

Quando si esprime un intero, il Numero può rappresentare un intervallo intero da [−2 alla potenza di 53, da 2 alla potenza di 253]. Perché Number ha 8 byte e 64 bit, inclusi 1 bit di segno, 11 bit esponenziali e 52 cifre mantissa.

Puoi usare Number.MAX_SAFE_INTEGER e Number.MIN_SAFE_INTEGER per visualizzare gli interi di sicurezza massimo e minimo

Quando l'interfaccia backend restituisce un campo di tipo lungo, il frontend utilizza JSON.parse(text) per deserializzare il display, causando un errore di visualizzazione, e la soluzione è che l'interfaccia backend converta il campo di tipo lungo in tipo stringa e lo restituisca.

progetto lossless-json, analizzando JSON senza il rischio di perdere informazioni numeriche. Indirizzo GitHub:Il login del link ipertestuale è visibile.

InnanzituttoClona il progetto lossless-jsonper costruire una libreria bundle e minificata (ES5, il PC deve installare node.js), e prima installare le dipendenze:

Poi compila come segue:



./dist/lossless-json.js Questo genererà un pacchetto di compatibilità ES5 che potrà essere eseguito sia nel browser che nel node.js.

Testato tramite la console del browser come segue:



Modifica il codice del progetto,Introduzione lossless-json.js file, chiamando LosslessJSON per serializzazione e deserializzazione JSON,Risolto il problema della perdita di precisione, come mostrato nella figura sottostante:

sia json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'}
sia testo = LosslessJSON.stringify(json);        '{"foo":"bar"}'



Indirizzo del test:Il login del link ipertestuale è visibile.

Infine, allega il file lossless-json.js compilato:
Turisti, se volete vedere il contenuto nascosto di questo post, vi pregoRisposta

(Fine)




Precedente:[Combattimento vero e proprio]. NET/C# esporta la cache utilizzando StackExchange.Redis fuzzy query
Prossimo:[Pratica] Java non può rilevare eccezioni personalizzate usando la riflessione di hutool
Pubblicato su 13/02/2022 16:28:40 |
Vengo a imparare di nuovo...
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com