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 prego Risposta (Fine) |