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

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

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

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

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

Дед Пахом писал(а): 10 Январь 2023, 17:29 то увидели бы, что IsFile прекрасно работает
Я это увидел. Было проверена масса работающий комбинаций. И с видами полей, Base64, файлами вналичии и т.д.
Но нам ведь была нужна именно не работающая комбинация ? ;) Её-то я нашёл и показал ! :)
Последний раз редактировалось Игорь Столяров 10 Январь 2023, 18:35, всего редактировалось 2 раза.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

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

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

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

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

Сразу хочу сказать, что свой вопрос с перебором заголовков больших 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) ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

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

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

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

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

Дед Пахом писал(а): 12 Январь 2023, 12:20 речь шла о прерывании загрузки в Parse()
И Parse() тоже. Всё требует времени ... :(
Но я понимаю, что общее решение здесь невозможно, а частное для своих задач я реализовал. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

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

Добрый день !

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

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

 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]'
Спасибо за рассмотрение ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

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

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

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

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

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

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

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

Дед Пахом писал(а): 13 Январь 2023, 16:55 а не сваливать все вопросы в одну, как в прошлый раз
Если прошлый раз раскидать на отдельные темы - то получится форум по классу cJson и это
замылит все остальные робкие обсуждения по вопросам Clarion. Что в общем-то не верно. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

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

В сорокастраничных темах "обо всём" невозможно ничего найти.
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

Лучше сделать и выложить какой-нибудь faq с примерами кода, отдельно от этих тем. В дополнение к примера из дистрибутива класса, или прямо туда все включить. Как мне кажется, искать в любом случае по такому обсуждению сложно будет. Тем более, про что тут написано, кроме вас двоих никто не понимает скорее всего. :-)
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

А как насчёт сделать подфорумы в "Программы, шаблоны, библиотеки..."? Для горячо обсуждаемых продуктов.
Вы ещё посоветовали бы в личку всё это перенести.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

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

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

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

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

Сообщение finsoftrz »

Автор лет 10 назад на с# перешёл. А что Вы хотите? Последний реальный баг фикс в самом кларионе более 5 лет назад был, а то и больше.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

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

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