Wymagania: Stworzyłem stronę parsowania online dla jwt, gdy treść jwt ma długi typ, użycie domyślnej metody JSON powoduje utratę dokładności, jak pokazano na poniższym rysunku:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript ma tylko jeden typ liczby: Number, Number to liczba zmiennoprzecinkowa o podwójnej precyzji, a w przeciwieństwie do wielu innych języków programowania, JavaScript nie definiuje różnych typów liczb, takich jak liczby całkowite, krótkie, długie, zmiennoprzecinkowe itd. Dlatego w JavaScript liczby nie są dzielone na typy całkowite i zmiennoprzecinkowe, a wszystkie liczby są typami zmiennoprzecinkowymi.
Wyrażając liczbę całkowitą, Liczba może reprezentować zakres całkowitości od [−2 do potęgi 53, 2 do potęgi 253]. Ponieważ Number ma 8 bajtów i 64 bity, w tym 1 bit znaku, 11 bitów wykładniczych i 52 cyfry mantisy.
Możesz użyć Number.MAX_SAFE_INTEGER i Number.MIN_SAFE_INTEGER, aby zobaczyć maksymalną i minimalną liczbę bezpieczeństwa。
Gdy interfejs backendowy zwraca pole typu long, frontend używa JSON.parse(text) do deserializacji wyświetlacza, co powoduje błąd wyświetlania, a rozwiązaniem jest konwersja pola typu long na string type i zwraca je.
projekt lossless-json, analizujący JSON bez ryzyka utraty informacji numerycznej. Adres GitHub:Logowanie do linku jest widoczne.
Po pierwszeKlonuj projekt lossless-jsonaby zbudować bibliotekę zgrupowaną i zminimalizowaną (ES5, PC musi zainstalować node.js), a najpierw zainstalować zależności:
Następnie skompiluj w następujący sposób:
./dist/lossless-json.js To wygeneruje pakiet kompatybilności ES5, który można uruchomić w przeglądarce i node.js.
Testowano przez konsolę przeglądarki w następujący sposób:
Zmodyfikuj kod projektu,Wprowadź lossless-json.js pliki, używając LosslessJSON do serializacji i deserializacji JSON,Naprawiono problem utraty celności, jak pokazano na poniższym rysunku:
niech json = LosslessJSON.parse('{"foo":"bar"}'); {FOO: 'Bar'} niech text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Adres testu:Logowanie do linku jest widoczne.
Na koniec dołącz skompilowany plik lossless-json.js:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź (Koniec) |