Cerințe: Am creat o pagină online de analizare pentru jwt, iar când conținutul jwt are un text lung, folosirea metodei JSON implicite pentru analizare va duce la o pierdere de acuratețe, așa cum se vede în figura de mai jos:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript are un singur tip de numere: Număr, Numărul este un număr cu dublă precizie în virgulă mobilă și, spre deosebire de multe alte limbaje de programare, JavaScript nu definește diferite tipuri de numere, cum ar fi numere întregi, scurte, lungi, în virgulă mobilă etc. Prin urmare, în JavaScript, numerele nu sunt împărțite în tipuri întregi și tipuri de virgulă mobilă, iar toate numerele sunt tipuri de virgulă mobilă.
Când se exprimă un număr întreg, Numărul poate reprezenta un interval întreg de la [−2 la puterea 53, 2 la puterea lui 253]. Pentru că Number are 8 octeți și 64 de biți, inclusiv 1 bit de semn, 11 biți exponențiali și 52 de cifre mantissă.
Poți folosi Number.MAX_SAFE_INTEGER și Number.MIN_SAFE_INTEGER pentru a vizualiza numerele întregi maxime și minime de siguranță。
Când interfața backend returnează un câmp de tip lung, frontend-ul folosește JSON.parse(text) pentru a deserializa afișarea, ceea ce va cauza o eroare de afișare, iar soluția este că interfața backend convertește câmpul de tip lung în tip string și îl returnează.
proiectul lossless-json, analizând JSON fără riscul pierderii informațiilor numerice. Adresă GitHub:Autentificarea cu hyperlink este vizibilă.
În primul rândClonează proiectul lossless-jsonpentru a construi o bibliotecă agregată și minificată (ES5, PC-ul trebuie să instaleze node.js) și să instaleze mai întâi dependențele:
Apoi compilați astfel:
./dist/lossless-json.js Acesta va genera un pachet de compatibilitate ES5 care poate fi executat atât în browser, cât și în node.js.
Testat prin consola browserului după cum urmează:
Modifică codul proiectului,Introduceți lossless-json.js fișiere, apelând LosslessJSON pentru serializare și deserializare JSON,S-a rezolvat problema pierderii de acuratețe, așa cum se arată în figura de mai jos:
fie json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} fie text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Adresa testului:Autentificarea cu hyperlink este vizibilă.
În final, atașează fișierul lossless-json.js compilat:
Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde (Sfârșit) |