Требования: Я создал онлайн-страницу для разбора 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 для просмотра максимальных и минимальных целых чисел безопасности。
Когда интерфейс бэкенда возвращает поле длинного типа (type long), фронтенд использует JSON.parse(text) для десериализации дисплея, что приводит к ошибке отображения, и решением является то, что интерфейс бэкенда преобразует поле type long в string type и возвращает его.
проект lossless-json, парсинг JSON без риска потери числовой информации. Адрес на GitHub:Вход по гиперссылке виден.
Прежде всегоКлонируйте проект lossless-jsonчтобы создать комплектную и минифицированную библиотеку (ES5, ПК должен установить 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 файл:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ (Конец) |