Изисквания: Направих онлайн страница за парсинг на 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 файл:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор (Край) |