SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Superobject и сериализация нулей типа Currency
Superobject и сериализация нулей типа Currency [сообщение #5893] Sat, 08 February 2025 02:22 Переход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 200
Зарегистрирован: September 2022
Senior Member
Superobject 1.2.4,Delphi 2007

Всем привет.
Обнаружил забавную вещь.
Если парсить поля с данными типа "числа с плавающей точкой", парсер superobject  смотрит на число цифр до и после запятой и, если возможно, то автоматически считает такие данные типа Currency. Ничего плохого в этом нет, экономится память и в некоторых случаях не теряется точность, а если запросить такие значения как Double, то и получим Double.
Однако, при сериализации таких данных, случается баг. Если значение поля равно нулю (0.0), то при формировании текстового представления выводится 0 и ещё один символ из не инициализированого буфера.
Получаем что-то типа:
"summa": 0@
Повторно распарсить такое поле с помощью superobject нельзя.
Обнаружил сие гадство довольно поздно, когда в блобах базы сформировалось довольно много испорченных json текстов.
Как бы поправить обе проблемы?
Re: Superobject и сериализация нулей типа Currency [сообщение #5894 является ответом на сообщение #5893] Sat, 08 February 2025 15:21 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 426
Зарегистрирован: August 2022
Senior Member
Э-э-э... Так же как любого другого бага: нажимая кнопки на клавиатуре в правильном порядке.
Re: Superobject и сериализация нулей типа Currency [сообщение #5895 является ответом на сообщение #5894] Sun, 09 February 2025 03:06 Переход к предыдущему сообщению
 в настоящее время не в онлайне 
Сообщений: 200
Зарегистрирован: September 2022
Senior Member
SD, да, я так и сделал, в двух местах.
Поправил логику в части сериализации.
И парсер (чтобы успешно разбирать ранее испорченные описанным выше багом json - выражения).
Предыдущая тема: Отзовитесь те, кто разрабатывает WEB приложения
Следующая тема: FireDac MS Access x64
Переход к форуму:
  


Текущее время: Fri Feb 21 14:28:31 GMT+3 2025

Общее время, затраченное на создание страницы: 0.00677 секунд