Вверх ↑
Этот топик читают: Гость
Ответов: 195
Рейтинг: 7
#1: 2021-05-14 15:54:36 ЛС | профиль | цитата
Добрый день, пожалуйста, есть ли у кого-то готовый компонент для работы с Json можете поделиться)
или если есть возможность подскажите как обработать json ответ web-сервера
карма: 0

0
Ответов: 793
Рейтинг: 168
#2: 2021-05-14 17:35:41 ЛС | профиль | цитата
hin4 писал(а):
если есть возможность подскажите как обработать json ответ web-сервера


Add(MainForm,15175452,175,133)
{
link(onCreate,4794102:doString,[])
}
Add(WinExec,11401622,287,133)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
link(onConsoleResult,16692353:doCharset,[])
}
Add(FormatStr,4794102,231,147)
{
Mask="Get-Date | Select-Object -Property * | ConvertTo-Json \r\nGet-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json"
link(onFString,11401622:doConsoleExec,[])
}
Add(Memo,12542941,406,147)
{
Left=410
Top=150
Align=5
ScrollBars=3
}
Add(Charset,16692353,350,147)
{
link(onCharset,12542941:doAdd,[])
}

карма: 16

0
Ответов: 793
Рейтинг: 168
#3: 2021-05-15 12:09:34 ЛС | профиль | цитата
hin4, надеюсь, так будет понятней.
Add(MainForm,15175452,287,161)
{
link(onCreate,4794102:doString,[])
}
Add(WinExec,11401622,399,161)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
link(onConsoleResult,16692353:doCharset,[])
}
Add(FormatStr,4794102,343,175)
{
Mask="$response = Invoke-WebRequest -Uri "%1" -UseBasicParsin\r\n$json = ConvertFrom-Json -InputObject $response.Content\r\n$json.Date\r\n$valute = $json.Valute \r\n$valute.EUR | ft"
link(onFString,11401622:doConsoleExec,[])
link(Str1,11141527:Text,[])
}
Add(Memo,12542941,518,175)
{
Left=410
Top=150
Align=5
Font=[Lucida Console,8,0,0,204]
ScrollBars=3
}
Add(Charset,16692353,462,175)
{
link(onCharset,12542941:doAdd,[])
}
Add(VisualStrings,11141527,343,112)
{
Lines=#42:https://www.cbr-xml-daily.ru/daily_json.js|
Width=214
Height=25
}


Редактировалось 1 раз(а), последний 2021-05-15 12:21:30
карма: 16

0
Ответов: 793
Рейтинг: 168
#4: 2021-05-24 21:06:29 ЛС | профиль | цитата
Пример работы с JSON при помощи утилиты jq.exe (64 bit, у кого 32 скачивайте по ссылке в схеме).
Так как используется внешняя утилита архив со схемой выкладываю на Yandex disk.
https://disk.yandex.ru/d/44f66w-bYQx06Q
карма: 16

0
Ответов: 793
Рейтинг: 168
#5: 2021-05-25 06:10:49 ЛС | профиль | цитата
hin4 писал(а):
подскажите как обработать json ответ web-сервера

Пример парсинга JSON ответа на стандартных компонентах.

Add(MainForm,4719667,105,210)
{
Width=437
Height=548
Caption="Курсы валют ЦБР"
link(onCreate,9364295:doDownload,[])
}
Add(VisualStrings,11141527,175,161)
{
Lines=#42:https://www.cbr-xml-daily.ru/daily_json.js|
Width=214
Height=25
}
Add(MTStrTbl,8868118,756,280)
{
Width=421
Height=509
Align=5
Name="asd"
Columns=#10:Код валюты|15:Название валюты|23:Курс к рублю на сегодня|
link(CodePageSet,7188498:GetData,[])
}
Add(EventFromData,7188498,756,224)
{
link(onEvent,7941961:doReplace,[])
}
Add(Replace,7941961,805,224)
{
SubStr="""
link(onReplace,7188498:doData,[(844,230)(844,216)(746,216)(746,230)])
}
Add(HTTP_Get,9364295,175,224)
{
link(onDownload,8204234:doConvert,[])
link(onStop,8546763:doColAction,[(214,251)(214,293)])
link(URL,11141527:Text,[])
}
Add(StreamConvertor,8204234,231,231)
{
Mode=6
link(onResult,5872125:doCharset,[])
}
Add(BlockFind,14111853,371,231)
{
IncludeBlock=1
StartBlock=""Date": ""
EndBlock="","
link(onSearch,6668896:doString,[])
}
Add(Charset,5872125,280,231)
{
Type=7
link(onCharset,6162946:doEvent1,[])
}
Add(FormatStr,6668896,420,231)
{
Mask="Курсы валют ЦБР на %1"
link(onFString,4719667:doCaption,[(459,237)(459,202)(95,202)(95,216)])
}
Add(Hub,6162946,336,231)
{
link(onEvent1,14111853:doSearch,[])
link(onEvent2,1221205:doSearch,[(361,244)(361,279)])
}
Add(BlockFind,1221205,371,273)
{
IncludeBlock=1
StartBlock="{"
EndBlock="}"
link(onSearch,1575706:doMultiBlockFind,[])
}
Add(MST_ColAction,8546763,231,287)
{
Action=9
MaxColWidth=1000
Index=-2
MSTControl="asd"
}
Add(MultiBlockFind,1575706,420,273)
{
Count=3
TagList="{**s} "CharCode": {**x} ,{**e} \r\n{**s} "Name": {**x} ,{**e} \r\n{**s} "Value": {**x} ,{**e}"
link(onResult1,10427479:doValue,[])
link(onResult2,9598334:doValue,[(501,286)(501,314)])
link(onResult3,15494458:doValue,[(494,293)(494,349)])
}
Add(Memory,15494458,525,343)
{
Default=String()
link(onData,4986666:doString,[(571,349)(571,391)(501,391)(501,412)])
}
Add(FormatStr,4986666,511,406)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,15216109:doMT,[])
link(Str1,10427479:Value,[])
link(Str2,9598334:Value,[])
link(Str3,15494458:Value,[])
}
Add(Memory,9598334,518,308)
{
Default=String()
}
Add(Memory,10427479,511,273)
{
Default=String()
}
Add(MST_RowAction,11877015,637,399)
{
MSTControl="asd"
}
Add(MT_String,15216109,588,399)
{
link(onResult,11877015:doRowAction,[])
}

карма: 16

1
Голосовали:zhorik5
Ответов: 793
Рейтинг: 168
#6: 2021-05-28 18:48:51 ЛС | профиль | цитата
«И тут Остапа понесло...»

Наверное, самый маленький парсер json ответа веб-сервера.

Add(MainForm,15175452,147,147)
{
Visible=1
link(onCreate,4794102:doString,[])
}
Add(WinExec,11401622,259,147)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(doConsoleInput)
Point(onConsoleTerminate)
link(onConsoleTerminate,15175452:doClose,[(298,167)(298,202)(137,202)(137,174)])
}
Add(FormatStr,4794102,203,161)
{
DataCount=1
Mask="$response = Invoke-WebRequest -Uri "%1" -UseBasicParsin\r\n$json = ConvertFrom-Json -InputObject $response.Content\r\n$valute = $json.Valute \r\n$valute.psobject.properties.value | Out-GridView -Title 'Json to table' -Wait\r\n\r\n"
link(onFString,11401622:doConsoleExec,[])
link(Str1,11141527:Text,[])
}
Add(VisualStrings,11141527,203,105)
{
Lines=#42:https://www.cbr-xml-daily.ru/daily_json.js|
Width=214
Height=25
}

В таблице можно установить фильтра на любой вкус. Также работает сортировка по столбцам.
Должна работать на всех windows10(на других не проверял.)
карма: 16

0
Ответов: 1291
Рейтинг: 47
#7: 2023-09-13 01:01:54 ЛС | профиль | цитата
Gunta, круто, спасибо, не знал что можно с помощью шелла такие формы и операции создавать..
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 793
Рейтинг: 168
#8: 2024-07-31 08:17:40 ЛС | профиль | цитата
Ещё один пример парсинг json ответа web-сервера
https://forum.hiasm.com/getfile/39678
карма: 16

0
файлы: 1Почасовой прогноз погоды..zip [1019B] [419]
Ответов: 1291
Рейтинг: 47
#9: 2024-07-31 09:46:53 ЛС | профиль | цитата
Gunta, спасибо, но чето первая схема курсов валют с ЯД ничего не отображает у меня. Даже столбцов нет.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 793
Рейтинг: 168
#10: 2024-07-31 12:49:16 ЛС | профиль | цитата
Aziz писал(а):
но чето первая схема курсов валют с ЯД ничего не отображает у меня. Даже столбцов нет.

Если под “ЯД “ ты подразумеваешь JQ, то я только что проверил, всё работает.

https://i.mcgl.ru/GCPb5sjZFN
В схеме используются две консольные утилиты:
1.curl.exe – входит в состав Windows10 (C:\Windows\System32\curl.exe)
2.jq.exe – скачивается с официального сайта https://jqlang.github.io/jq/download/ для своей платформы (должно находится рядом со схемой).
карма: 16

0
Ответов: 1291
Рейтинг: 47
#11: 2024-07-31 13:11:10 ЛС | профиль | цитата
Gunta, да. Не знаю, я просто прямо в архиве щелкнул схему, она загрузилась и скомпилировал ее. Обычно архиватор во временную папку все извлекает. Счас попробую нормально извлечь все..

--- Добавлено в 2024-07-31 13:12:10

Да, заработало. Видимо архиватор все же утилиту не извлек..

--- Добавлено в 2024-07-31 13:13:48

А по поводу моего компонента Candles нового, можешь глянуть что с ним не так? Почему крушится..

Редактировалось 3 раз(а), последний 2024-08-01 00:37:56
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 793
Рейтинг: 168
#12: 2024-08-01 07:05:04 ЛС | профиль | цитата
Aziz писал(а):
А по поводу моего компонента Candles нового, можешь глянуть что с ним не так? Почему крушится..

Постараюсь ответить в твоей ветке.
карма: 16

0
Ответов: 98
Рейтинг: 1
#13: 2024-08-23 14:01:24 ЛС | профиль | цитата
Gunta, с кириллицей решить проблему знаешь как при отправке команды-данных в cmd или powershell?

Редактировалось 3 раз(а), последний 2024-08-23 16:35:23
карма: 0

0
Ответов: 793
Рейтинг: 168
#14: 2024-08-24 05:07:25 ЛС | профиль | цитата
strannik_nebes писал(а):
с кириллицей решить проблему знаешь как при отправке команды-данных в cmd или powershell?

Вот несколько способов как можно решить проблему с русскими буквами в пути к запускаемой программе:
1. Одинарные кавычки – чаше всего этого достаточно. Пример – 'c:\Users\Иван\Проект\Моя программа.exe'
2. Утроение обычных кавычек. Пример – """c:\Users\Иван\Проект\Моя программа.exe"""
3. Использование относительного пути к запускаемой программе. Пример – '.\my_folder\pdftotext.exe'
4. Если файл или папка начинаются с букв t,n,r,x,0 и др. то нужно использовать удвоение слешей. Пример – 'c:\\new_project\\txt_to_html.exe'
5. Скопировать запускаемую программу в папку без русских букв. Пример – 'c:\Users\Public\Documents\new_project\myapp.exe'
6. Добавить путь к запускаемой программе к переменной PATH в переменные окружения (переменные среды).
карма: 16

0
Ответов: 98
Рейтинг: 1
#15: 2024-09-17 10:16:07 ЛС | профиль | цитата
Gunta, Я о другом. Кодировка CP866 не поддерживает передачу русских символов в консоль, например через компонент Winexec. Пришлось применять костыли в виде смены кодировки консоли командой "chcp 1251" и лазанием в реестр.

Редактировалось 1 раз(а), последний 2024-09-17 10:17:33
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)