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

cJSON: Рабочие вопросы при работе с классом

Добавлено: 10 Январь 2023, 18:33
Игорь Столяров
Дед Пахом писал(а): 10 Январь 2023, 17:29 то увидели бы, что IsFile прекрасно работает
Я это увидел. Было проверена масса работающий комбинаций. И с видами полей, Base64, файлами вналичии и т.д.
Но нам ведь была нужна именно не работающая комбинация ? ;) Её-то я нашёл и показал ! :)

cJSON: Рабочие вопросы при работе с классом

Добавлено: 10 Январь 2023, 18:34
Дед Пахом
Ну да, и сказали, что IsFile не работает, что сильно сбило с толку.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 12 Январь 2023, 9:01
Игорь Столяров
Сразу хочу сказать, что свой вопрос с перебором заголовков больших JSON пакетов
я решил и запустил в работу. Работает не просто быстро, а очень быстро. :ty:

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

GetJsonHeader        PROCEDURE  (String sFileName_,*Group gPacket_,String sBreakTag_)
MyJSon               cJSONFactory
Root                 &cJson
RetVal               BYTE(False)
sData                &STRING
  CODE
  sData &= LoadStrFromFile(sFileName_,4096)  ! Считаем, что заголовок пакета менее 4 KByte (опционально)
  If Not (sData &= Null) then BreakPosition# = InString('"' & Lower(sBreakTag_) & '":',Lower(sData),1,1)
     If BreakPosition# > 2 then Root &= MyJSon.Parse(Sub(sData,1,BreakPosition# - 2) & '}',CP_ACP)        
        If Not (Root &= Null) then RetVal = Root.ToGroup(gPacket_); Root.Delete().
     end
     Dispose(sData)
  end
  Return RetVal
И возможно конечно я чего-то не понимаю, но я не увидел каких-то проблем в классе
с прыванием / пропуском загрузки в cJSON.ToGroup() на заданном теге, т.к. это место определено:

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

   IF LOWER(jsonName) = LOWER(item.name) ...

cJSON: Рабочие вопросы при работе с классом

Добавлено: 12 Январь 2023, 12:20
Дед Пахом
Емнип речь шла о прерывании загрузки в Parse().

cJSON: Рабочие вопросы при работе с классом

Добавлено: 12 Январь 2023, 13:21
Игорь Столяров
Дед Пахом писал(а): 12 Январь 2023, 12:20 речь шла о прерывании загрузки в Parse()
И Parse() тоже. Всё требует времени ... :(
Но я понимаю, что общее решение здесь невозможно, а частное для своих задач я реализовал. :)

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 15:09
Игорь Столяров
Добрый день !

Это снова я и у меня есть вопрос ! :)
Для обмена списками между потоками юзаем незатейливую комбинацию (казалось бы !):

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

 If Who(qList_,2) = '' then Root &= json::CreateSimpleArray(qList_,1,False,'[{{"name":"*","IgnoreEmptyObject":true,"IgnoreZero":true}]')
 else                       Root &= json::CreateArray(      qList_,  False,'[{{"name":"*","IgnoreEmptyObject":true,"IgnoreZero":true}]').
и к традиционному json::CreateArray() вопросов нет, но (как сегодня выяснилось) вот такой тест:

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

qList Queue
Fld     Long
      end
  Code
  qList.Fld =  1; Add(qList)
  qList.Fld =  0; Add(qList)
  qList.Fld = -1; Add(qList)
  qList.Fld =  0; Add(qList)
  Root &= json::CreateSimpleArray(qList,1,False,'[{{"name":"*","IgnoreEmptyObject":true,"IgnoreZero":true}]')
  If Not (Root &= Null) then Message(Root.ToString()); Root.Delete().
возвращает: [1, 0, -1, 0]
хотя ожидания (аналогично json::CreateArray): [1, -1]
Затрудняюсь сказать, чем идеологически является "0" в таком SimpleArray (объектом или значением тега) - но его там быть не должно.

И есть техническое предложение.
Если Root.ToString(FALSE) - то убрать жрущие впустую память пробелы, т.е.: '[1,0,-1,0]' вместо '[1, 0, -1, 0]'
Спасибо за рассмотрение ! :)

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 16:29
Дед Пахом
Да, json::CreateSimpleArray игнорирует правила для полей, попробуйте v1.38.1 на FTP.
Про лишние пробелы: используйте json::Minify.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 16:55
Дед Пахом
Как модератор хочу Вас попросить смело открывать новую тему (когда это оправдано), а не сваливать все вопросы в одну, как в прошлый раз.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 17:30
Игорь Столяров
Дед Пахом писал(а): 13 Январь 2023, 16:55 а не сваливать все вопросы в одну, как в прошлый раз
Если прошлый раз раскидать на отдельные темы - то получится форум по классу cJson и это
замылит все остальные робкие обсуждения по вопросам Clarion. Что в общем-то не верно. ;)

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 18:09
Дед Пахом
В сорокастраничных темах "обо всём" невозможно ничего найти.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 19:54
finsoftrz
Лучше сделать и выложить какой-нибудь faq с примерами кода, отдельно от этих тем. В дополнение к примера из дистрибутива класса, или прямо туда все включить. Как мне кажется, искать в любом случае по такому обсуждению сложно будет. Тем более, про что тут написано, кроме вас двоих никто не понимает скорее всего. :-)

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 20:25
kreator
А как насчёт сделать подфорумы в "Программы, шаблоны, библиотеки..."? Для горячо обсуждаемых продуктов.
Вы ещё посоветовали бы в личку всё это перенести.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 20:48
Игорь Столяров
finsoftrz писал(а): 13 Январь 2023, 19:54 Тем более, про что тут написано, кроме вас двоих никто не понимает скорее всего.
Обсуждаются частные вопросы применения и какие-то совсем незначительные помарки,
которые видны только на достаточно редких и специфических наборах данных.

Если кому-то вдруг интересен путь познания - смотрите пожалуйста этот сериал.
А для работы есть штатные примеры и авторская документация, в которой рассмотрены
практически все вопросы применения. Ну, если конечно её читать ... ;)
kreator писал(а): 13 Январь 2023, 20:25 А как насчёт сделать подфорумы в "Программы, шаблоны, библиотеки..."?
На самом деле класс компактный, впрочем как и сам формат JSON. Вопросов не много.
С другой стороны - в корне форума есть раздел MAV, хотя где тот MAV и его автор ?
Последнее сообщение более 6 лет назад, а от автора - уже более 10 лет назад ... :(

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 21:23
finsoftrz
Автор лет 10 назад на с# перешёл. А что Вы хотите? Последний реальный баг фикс в самом кларионе более 5 лет назад был, а то и больше.

cJSON: Рабочие вопросы при работе с классом

Добавлено: 13 Январь 2023, 21:37
Игорь Столяров
finsoftrz писал(а): 13 Январь 2023, 21:23 Автор лет 10 назад на с# перешёл.
— Дом-то снесли !
— Снесли … А стеночка осталась ...
(С) Дозор, не помню какой именно.