Страница 3 из 3
					
				cJSON
				Добавлено: 21 Сентябрь 2018, 20:27
				 Дед Пахом
				Перегнал cJSON (парсер json, написанный на ANSI C) на Clarion.
Есть примеры использования. Предложения и замечания приветствуются.
 
 
Доп. инструмент:
Json Mapper 
viewtopic.php?p=54008 
			 
			
					
				cJSON
				Добавлено: 22 Январь 2023, 13:19
				 Игорь Столяров
				Дед Пахом писал(а): 21 Январь 2023, 17:28
упростить код в некоторых случаях
 
Интересно, что Вы пошли по пути сабклассинга собственного класса для вырожденных случаев.
Такие задачи даже я уже давно решил. 

 
			 
			
					
				cJSON
				Добавлено: 22 Январь 2023, 18:49
				 Дед Пахом
				Игорь Столяров писал(а): 22 Январь 2023, 13:19
Интересно, что Вы пошли по пути
 
Просто закрыл дыры в функционале.
 
			 
			
					
				cJSON
				Добавлено: 22 Июнь 2023, 14:26
				 gopstop2007
				Обновил, при запуске примера QueueTest.clw ошибки
			 
			
					
				cJSON
				Добавлено: 22 Июнь 2023, 14:38
				 Игорь Столяров
				Там в комплекте идёт класс DynStrClass.inc / clw - их также нужно обновить (или установить).
			 
			
					
				cJSON
				Добавлено: 22 Июнь 2023, 14:44
				 gopstop2007
				Игорь Столяров писал(а): 22 Июнь 2023, 14:38
Там в комплекте идёт класс DynStrClass.inc / clw - их также нужно обновить (или установить).
 
Вся папка libscr с архива копировалась в c:\Clarion10\accessory\libsrc\win\
 
			 
			
					
				cJSON
				Добавлено: 22 Июнь 2023, 14:53
				 Игорь Столяров
				Возможно откуда-то подтягивается старая версия ...
Проверьте нет ли c:\Clarion10\libsrc\win\ файлов DynStrClass.*
Или (для теста) скопируйте их в папку собираемого проекта.
			 
			
					
				cJSON
				Добавлено: 22 Июнь 2023, 16:34
				 gopstop2007
				Игорь Столяров писал(а): 22 Июнь 2023, 14:53
Возможно откуда-то подтягивается старая версия ...
Проверьте нет ли c:\Clarion10\libsrc\win\ файлов DynStrClass.*
Или (для теста) скопируйте их в папку собираемого проекта.
 
Спасибо Игорь, так оно и оказалось.  

 
			 
			
					
				cJSON
				Добавлено: 14 Декабрь 2023, 15:10
				 Дед Пахом
				Новая v1.41 расширяет применение GetStringValue() на числовые данные. Костыль для больших целых чисел на самом деле. Пример:"serialNumber": 417610737815768073. В LONG не влезает, в REAL 4.1761073781576802e17, теперь можно получить корректный номер так: sSerialNumber = jItem.GetStringValue().
			 
			
					
				cJSON
				Добавлено: 18 Август 2024, 15:26
				 gopstop2007
				Парсю ответ: 
Код: Выделить всё
    jsonFactory.codePage = CP_ACP    !- convert utf8 to ascii
    jroot &= jsonFactory.Parse(BankTerm:TermJson_Response)
    IF jroot &= NULL
        !error
        MESSAGE('Syntax error near: '& jsonFactory.GetError() &'|at position '& jsonFactory.GetErrorPosition())
        RETURN
    END
выдает ошибку - 'Syntax error near: {"method":"Purchase at position 1'
Проверял формат JSON через онлайн проверку, ошибок не нашел
Строка JSON для парсинга:
Код: Выделить всё
{"method":"Purchase","step":0,"params":{"trnStatus":"1","adv":"ТестБанк","adv2p":"Берем и делаем!",  "bankAcquirer":"ТестБанк","paymentSystem":"TESTVISA","rrnExt":"","subMerchant":"","textMess":"","amount":"0,60",  "approvalCode":"70569","captureReference":"","cardExpiryDate":"2512",  "date":"18.08.2024","discount":"0.00","hstFld63Sf89":"","invoiceNumber":"1000840853","issuerName":"TESTVISA",  "merchant":"S0HS0000","pan":"1111**TEST**9999","posConditionCode":"00","posEntryMode":"071","processingCode":"000000", "receipt":"<div class=\"receipt\"><div class=\"font-xl\">ТЕСТБАНК</div><div class=\"font-xs\" id=\"receipt_header\">     Тест совмещение<br/>        вул.Университетськая,буд.102<br/>    г.Мой<br/>            ФОП TECT<br/>         ЄДРПОУ: 1234567890<br/> </div><div class=\"oper\" id=\"oper\">ОПЛАТА</div><div class=\"block\" id=\"report_info\"><div class=\"block font-xl\" id=\"amount\">Сумма: 0,60 грн.</div></div><div class=\"block5\">П</div><div class=\"block5 align-right\"> </div><div class=\"block\" id=\"masked_pan\"> VISA 1234********5678</div><div class=\"block mt-10\" id=\"aid\"> AID: A0000000011111 </div><div class=\"block mb0 font-s\"><div class=\"block5\"><div class=\"pull-left\" id=\"datetime\"> 18.08.2024 15:14:06</div><div class=\"pull-right\" id=\"receipt_id\"> Чек № 1000840853 (Пакет: 0) </div></div><div class=\"block5\"><div class=\"pull-left\" id=\"merchant\"> Мерчант: S0HS0000 </div><div class=\"pull-right\" id=\"terminal_name\"> Терминал № 00101010 </div></div><div class=\"block5\"><div class=\"pull-left\" id=\"approval_code\"> Код авторизации: 177492 </div><div class=\"pull-right\" id=\"rrn\"> RRN: 29329659724 </div></div></div></div>",  "responseCode":"0000","rrn":"29329659724","terminalId":"S0HS0000","time":"15:14:06","track1":"","signVerif":"0","txnType":"1"},  "error":false,"errorDescription":""}
Помогите понять в чем проблема, спасибо за внимание
 
			 
			
					
				cJSON
				Добавлено: 18 Август 2024, 15:56
				 PavelNK
				Вначале могут стоять символы, которые не отображаются. Запишите строку в файл и посмотрите в 16-ричном виде. Возможно в этом дело
			 
			
					
				cJSON
				Добавлено: 18 Август 2024, 16:18
				 Игорь Столяров
				gopstop2007 писал(а): 18 Август 2024, 15:26
Строка JSON для парсинга:
 
Ну если это задана именно JSON как строка, тогда будьте любезны дублировать левые фигурную и угловую скобки:
Код: Выделить всё
'{{"method":"Purchase","step":0,"params":{{"trnStatus":"1","adv":"ТестБанк","adv2p":"Берем и делаем!",'  ... и т.д.
 
			 
			
					
				cJSON
				Добавлено: 18 Август 2024, 21:14
				 gopstop2007
				нашел, буфер был маленький, смутило что обрезало на обратном слеше 
спасибо всем
			 
			
					
				cJSON
				Добавлено: 22 Сентябрь 2024, 0:03
				 Дед Пахом
				v1.44 доступна, был неприятный баг с опциями (изначально его не было, относительно недавное творчество). Суть в том, что дефолтной опцией считалась самая первая, а не та, которая "name":"*". То есть:
Код: Выделить всё
'[{{"name":"Password", "ignore":true}, {{"name":"Balance", "format":"@N$9.2"}, {{"name":"LastVisitDate", "format":"@d17"}, {{"name":"LastVisitTime", "format":"@t8"}]'
Здесь первая опция "Password" считалась дефолтной, соответственно все остальные получали "ignore":true в подарок.
 
			 
			
					
				cJSON
				Добавлено: 04 Октябрь 2024, 18:39
				 Дед Пахом
				v1.46 доступна.
			 
			
					
				cJSON
				Добавлено: 16 Октябрь 2024, 20:06
				 Дед Пахом
				v1.48 доступна.