cJSON: Запись булевых значений

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Запись булевых значений

Сообщение Игорь Столяров »

Привет всем !

Спасите и помогите ! Упёрся в элементарную вещь.
Нужно выгрузить незатейливую строку вида: {"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: В примерах и описании тема булевых значений вообще не раскрыта. :nono:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

cJSON: Запись булевых значений

Сообщение 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 отработает
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

cJSON: Запись булевых значений

Сообщение Admin »

Вот такой json получается

Код: Выделить всё

{"LOGIN":"Igor","FLAGCLOSE":false}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Запись булевых значений

Сообщение Игорь Столяров »

Ой ! Что-то я очкую изменять такой сложный класс ... Неизвестно где аукнется ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

cJSON: Запись булевых значений

Сообщение Admin »

Ой да прекрати.
Кинь его в папку с программой и там поменяй.
Чему там аукаться то?
Сформируй две версии JSON файла и сделай DIFF. Сам увидишь

P.S. Ну или жди Дедушку :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Запись булевых значений

Сообщение Дед Пахом »

Отличная идея! Добавлю после обеда.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Запись булевых значений

Сообщение Дед Пахом »

Выложил v1.23.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Запись булевых значений

Сообщение Игорь Столяров »

Спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Запись булевых значений

Сообщение Игорь Столяров »

А ведь можно сразу определять тип поля, как Вы рассказали вот здесь: viewtopic.php?t=4481
И если он

Код: Выделить всё

MyGroup Group
...
Flag  Bool
...
end

то и выгружать его сразу в JSON как Bool по умолчанию ...
И без вариантов. Bool он везде и есть Bool (True / False). Здесь нет суперпозиции. ;)
Сейчас приходится задавать формат выгрузки для всех флагов - но это ведь и так есть в их объявлении.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

cJSON: Запись булевых значений

Сообщение Admin »

Игорь Столяров писал(а): 18 Ноябрь 2022, 10:01 Сейчас приходится задавать формат выгрузки для всех флагов
Аппетит приходит во время еды! :lol:
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Запись булевых значений

Сообщение Дед Пахом »

Если бы... BOOL это не отдельный тип, а другое наименование LONG.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Запись булевых значений

Сообщение Игорь Столяров »

Дед Пахом писал(а): 18 Ноябрь 2022, 10:50 BOOL это не отдельный тип
Понял. Печаль !
smile199.gif
smile199.gif (3.34 КБ) 771 просмотр
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить