Страница 1 из 1
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 8:10
Игорь Столяров
Привет всем !
Спасите и помогите ! Упёрся в элементарную вещь.
Нужно выгрузить незатейливую строку вида: {"Login":"Igor","FlagClose":False}
Код: Выделить всё
Users Group
Login String('Igor')
FlagClose Byte(False)
end
jParam &cJson
Code
jParam &= json::CreateObject(Users,False,'[{{"name":"FlagClose","isBool":true}]') ! isBool - это моя фантазия !
Message(jParam.ToString()) ! -->> {"Login":"Igor","FlagClose":0}
Можно ли (как-то) формировать булевы значения через json::CreateObject() ?
Метод: cJSON.AddBoolToObject() видел, но это ручное формирование.
А у меня семиэтажные структуры с массивами ...

Заранее спасибо за помощь !
P/S: В примерах и описании тема булевых значений вообще не раскрыта.

cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 9:39
Admin
В TFieldRule добавить IsBool BYTE
а потом в
Код: Выделить всё
json::CreateObject PROCEDURE(*GROUP grp, BOOL pNamesInLowerCase = TRUE, <STRING options>)
где то между этих строк
Код: Выделить всё
ndx += nestedItem.GetArraySize(TRUE) !- skip fields from nested groups
ELSIF ISSTRING(fldValue)
вставить
Код: Выделить всё
ELSIF fldRules.IsBool
item.AddBoolToObject(jsonName, fldValue)
Что то мне кажется что этого хватит и ваша опция isBool отработает
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 9:47
Admin
Вот такой json получается
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 9:51
Игорь Столяров
Ой ! Что-то я очкую изменять такой сложный класс ... Неизвестно где аукнется ...

cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 9:53
Admin
Ой да прекрати.
Кинь его в папку с программой и там поменяй.
Чему там аукаться то?
Сформируй две версии JSON файла и сделай DIFF. Сам увидишь
P.S. Ну или жди
Дедушку 
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 12:49
Дед Пахом
Отличная идея! Добавлю после обеда.
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 16:08
Дед Пахом
Выложил v1.23.
cJSON: Запись булевых значений
Добавлено: 17 Ноябрь 2022, 16:18
Игорь Столяров
Спасибо !

cJSON: Запись булевых значений
Добавлено: 18 Ноябрь 2022, 10:01
Игорь Столяров
А ведь можно сразу определять тип поля, как Вы рассказали вот здесь:
viewtopic.php?t=4481
И если он
то и выгружать его сразу в JSON как Bool по умолчанию ...
И без вариантов. Bool он везде и есть Bool (True / False). Здесь нет суперпозиции.

Сейчас приходится задавать формат выгрузки для всех флагов - но это ведь и так есть в их объявлении.
cJSON: Запись булевых значений
Добавлено: 18 Ноябрь 2022, 10:38
Admin
Игорь Столяров писал(а): 18 Ноябрь 2022, 10:01
Сейчас приходится задавать формат выгрузки для всех флагов
Аппетит приходит во время еды!

cJSON: Запись булевых значений
Добавлено: 18 Ноябрь 2022, 10:50
Дед Пахом
Если бы... BOOL это не отдельный тип, а другое наименование LONG.
cJSON: Запись булевых значений
Добавлено: 18 Ноябрь 2022, 11:51
Игорь Столяров
Дед Пахом писал(а): 18 Ноябрь 2022, 10:50
BOOL это не отдельный тип
Понял. Печаль !

- smile199.gif (3.34 КБ) 7734 просмотра