Начало » Программирование » 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 текстов.
Как бы поправить обе проблемы?
|
|
|
|
|
Переход к форуму:
Текущее время: Fri Feb 21 14:28:31 GMT+3 2025
Общее время, затраченное на создание страницы: 0.00677 секунд
|