Страница 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 КБ) 9023 просмотра