Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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]. Потому что у Числа 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 файл:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйстаОтвет

(Конец)




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

Mail To:help@itsvse.com