Вимоги: Я створив онлайн-сторінку для розбору jwt, коли вміст jwt має довгий шрифт, використання стандартного методу JSON для парсингу призведе до втрати точності, як показано на рисунку нижче:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript має лише один тип числа: Число, число — це число з подвійною точністю з плаваючою комою, і на відміну від багатьох інших мов програмування, JavaScript не визначає різні типи чисел, такі як цілі числа, короткі, довгі, плаваючі з комою тощо. Тому в JavaScript числа не поділяються на типи цілих чисел і типи з плаваючою комою, і всі числа є типами з плаваючою комою.
При вираженні цілого числа число може представляти цілий діапазон [−2 до степеня 53, 2 до степеня 253]. Тому що Число має 8 байтів і 64 біти, включаючи 1 біт знаку, 11 експоненціальних бітів і 52 цифри мантиси.
Ви можете використовувати Number.MAX_SAFE_INTEGER і Number.MIN_SAFE_INTEGER для перегляду максимальних і мінімальних безпечних цілих чисел。
Коли бекенд-інтерфейс повертає поле типу long, фронтенд використовує JSON.parse(text) для десеріалізації дисплея, що призводить до помилки відображення, і рішенням є те, що бекенд-інтерфейс конвертує поле типу long у string type і повертає його.
проєкт lossless-json, який аналізує JSON без ризику втрати числової інформації. Адреса GitHub:Вхід за гіперпосиланням видно.
ПередусімКлонуйте проєкт lossless-jsonщоб створити комплектну та мініфіковану бібліотеку (ES5, ПК має встановити node.js), і спочатку встановити залежності:
Потім компілюйте наступним чином:
./dist/lossless-json.js Це створить пакет сумісності з ES5, який можна запускати в браузері та node.js.
Тестування через консоль браузера наступним чином:
Модифікувати код проєкту,Ввести lossless-json.js файли, викликаючи LosslessJSON для серіалізації та десеріалізації JSON,Виправлено проблему втрати точності, як показано на рисунку нижче:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} нехай text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Тестова адреса:Вхід за гіперпосиланням видно.
Нарешті, додайте скомпільований lossless-json.js файл:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь (Кінець) |