Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 8278|Отговор: 1

[JavaScript] Front-end JS решава проблема със загубата на точност на сериализацията на JSON

[Копирай линк]
Публикувано в 13.02.2022 г. 14:37:43 ч. | | | |
Изисквания: Направих онлайн страница за парсинг на jwt, когато съдържанието на jwt има дълъг тип, използването на стандартния JSON метод за парсване ще доведе до загуба на точност, както е показано на фигурата по-долу:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript има само един тип число: Число, число е число с двойна точност с плаваща запетая, и за разлика от много други програмни езици, JavaScript не дефинира различни типове числа, като цели числа, къси, дълги, плаващи запетая и др. Следователно, в JavaScript числата не се разделят на цели и типове с плаваща запетая, и всички числа са типове с плаваща запетая.

При изразяване на цяло число, числото може да представлява цяло число от [−2 към степен на 53, 2 до степен на 253]. Защото Number има 8 байта и 64 бита, включително 1 знаков бит, 11 експоненциални бита и 52 мантиса цифри.

Можете да използвате Number.MAX_SAFE_INTEGER и Number.MIN_SAFE_INTEGER, за да видите максималните и минималните цели числа за безопасност

Когато бекенд интерфейсът връща поле с тип long, фронтендът използва JSON.parse(text), за да десериализира дисплея, което води до грешка при показване, а решението е, че бекенд интерфейсът преобразува полето тип long в string тип и го връща.

проект lossless-json, който анализира JSON без риск от загуба на числова информация. GitHub адрес:Входът към хиперлинк е видим.

Преди всичкоКлонирайте проекта lossless-jsonза да се създаде включена и миниатюрирана библиотека (ES5, PC трябва да инсталира node.js), и първо да инсталира зависимостите:

След това компилирайте по следния начин:



./dist/lossless-json.js Това ще генерира пакет за съвместимост с ES5, който може да се изпълнява в браузъра и node.js.

Тествано през конзолата на браузъра по следния начин:



Променете кода на проекта,Въведете lossless-json.js файлове, наричайки LosslessJSON за сериализация и десериализация на JSON,Оправен е проблемът със загубата на точност, както е показано на фигурата по-долу:

нека json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'}
нека text = LosslessJSON.stringify(json);        '{"foo":"bar"}'



Тестов адрес:Входът към хиперлинк е видим.

Накрая прикачете компилирания lossless-json.js файл:
Туристи, ако искате да видите скритото съдържание на този пост, моляОтговор

(Край)




Предишен:[Истински бой]. NET/C# експортира кеша чрез StackExchange.Redis fuzzy заявка
Следващ:[Практика] Java не може да улови персонализирани изключения чрез отражение на hutool
Публикувано в 13.02.2022 г. 16:28:40 ч. |
Ела да научиш отново...
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com