cJSON: Проблема с исключением пустых массивов

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

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

cJSON: Проблема с исключением пустых массивов

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

Добрый день !

Есть проблема с исключением пустых массивов. :(
Легко воспроизводится в примере:

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

  Data  
Q_Town   Queue,Type
sName      CString(41) 
Shops      CString(41),Dim(3)
Stadiums   CString(41),Dim(3)
Museums    CString(41),Dim(3)
         end
         
gCountry Group 
sName      CString(41)
qTown      &Q_Town
         end
         
MyTown   Queue(Q_Town).
Object   &cJson

  Code       
  gCountry.SName  = 'Россия'  
  
  Clear(MyTown)
  MyTown.sName    = 'Москва'
  MyTown.Shops[1]    = 'ЦУМ'
  MyTown.Shops[2]    = 'ГУМ'
  MyTown.Stadiums[2] = 'Лужники'
  Add(MyTown)
  
  Clear(MyTown)
  MyTown.sName    = 'Ростов'
  Add(MyTown)
  
  Clear(MyTown)
  Add(MyTown)
  
  gCountry.qTown &= MyTown  
  Object &= json::CreateObject(gCountry,,'[{{"Name":"*","EmptyString":"ignore","IgnoreZero":true,' & |
                                            '"IgnoreEmptyObject":true,"IgnoreEmptyArray":true},'   & |
                                          '{{"Name":"qTown","instance":' & Instance(gCountry.qTown,Thread()) & '}]')
  Message(Object.ToString(True))
  SetClipBoard(Object.ToString(True))
  Object.Delete()
Результат:

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

{
	"sname":	"Россия",
	"qtown":	[{
			"sname":	"Москва",
			"shops":	["ЦУМ",  "ГУМ"],
			"stadiums":	["Лужники"],
			"museums":	[]
		},  {
			"sname":	"Ростов",
			"shops":	[],
			"stadiums":	[],
			"museums":	[]
		},  {
			"shops":	[],
			"stadiums":	[],
			"museums":	[]
		}]
}
Интересно, что сами пустые стороки внутри массивов не выводятся.
Проверьте пожалуйста ! :)
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3284
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

cJSON: Проблема с исключением пустых массивов

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

Фикс готов, но пока не выкладывал, так как имею встречный вопрос.
Есть числовой массив Numbers Long, Dim(3), значения [0, 345, 0], а в опциях указано "IgnoreZero":true, то какой json мы ожидаем? Либо "Numbers":[0. 345, 0] (на сейчас так), либо "Numbers":[345] (как документировано, но не работает).
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3284
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

cJSON: Проблема с исключением пустых массивов

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

Привёл поведение опции IgnoreZero в соответствие с документацией, то есть и для элементов числовых массивов.
Версия v1.42 доступна для тестирования.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

cJSON: Проблема с исключением пустых массивов

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

Спасибо ! На моих тестах теперь всё работает штатно. :)
Make Clarion Great Again ! 😎
Ответить