Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 8278|Odpowiedź: 1

[JavaScript] Front-end JS rozwiązuje problem utraty dokładności serializacji JSON

[Skopiuj link]
Opublikowano 13.02.2022 14:37:43 | | | |
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)




Poprzedni:[Rzeczywista walka]. NET/C# eksportuje pamięć podręczną za pomocą zapytania rozmytego StackExchange. Redis
Następny:[Ćwiczenie] Java nie wykrywa niestandardowych wyjątków za pomocą odbicia hutool
Opublikowano 13.02.2022 16:28:40 |
Przyszedł znów się uczyć...
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com