Страница 1 из 1

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

Добавлено: 14 Сентябрь 2024, 0:13
Игорь Столяров
Добрый день !

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

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

  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":	[]
		}]
}
Интересно, что сами пустые стороки внутри массивов не выводятся.
Проверьте пожалуйста ! :)

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

Добавлено: 14 Сентябрь 2024, 16:15
Дед Пахом
Фикс готов, но пока не выкладывал, так как имею встречный вопрос.
Есть числовой массив Numbers Long, Dim(3), значения [0, 345, 0], а в опциях указано "IgnoreZero":true, то какой json мы ожидаем? Либо "Numbers":[0. 345, 0] (на сейчас так), либо "Numbers":[345] (как документировано, но не работает).

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

Добавлено: 14 Сентябрь 2024, 18:17
Дед Пахом
Привёл поведение опции IgnoreZero в соответствие с документацией, то есть и для элементов числовых массивов.
Версия v1.42 доступна для тестирования.

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

Добавлено: 14 Сентябрь 2024, 21:29
Игорь Столяров
Спасибо ! На моих тестах теперь всё работает штатно. :)