Вверх ↑
Этот топик читают: Гость
Ответов: 33
Рейтинг: 0
#1: 2021-05-17 15:04:58 ЛС | профиль | цитата
Здравствуйте!
Есть ли возможность конвертации данных из формата json в формат xml по средствам пакета delphi?
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1778
Рейтинг: 121
#2: 2021-05-17 16:04:17 ЛС | профиль | цитата
MBO
Есть ли возможность конвертации данных из формата json в формат xml по средствам пакета delphi?

Просто сделать схему не получится. Надо IC писать.
https://webdelphi.ru/2020/05/rabota-s-json-v-lazarus-free-pascal/
https://wiki.freepascal.org/fcl-json
По образу и подобию
https://disk.yandex.ru/d/aWfidUdSPMAqfA
или
https://disk.yandex.ru/d/xDc3zYaSuWuLSw
https://disk.yandex.ru/d/w3ULO3uaAEbJiw

Редактировалось 5 раз(а), последний 2021-05-17 16:38:24
карма: 5

0
Ответов: 146
Рейтинг: 22
#3: 2021-05-17 16:41:24 ЛС | профиль | цитата
MBO, выложи свой json файл или дай ссылку на него. А то опять "на кошках тренироваться".
карма: 4

0
Ответов: 33
Рейтинг: 0
#4: 2021-05-17 21:07:51 ЛС | профиль | цитата
Gunta писал(а):
MBO, выложи свой json файл или дай ссылку на него. А то опять "на кошках тренироваться".


Вот приблизительный (сюда залить не смог)
Но в будущем он может быть больше, или меньше!
Спасибо за помощь)

https://mega.nz/file/TUsG1YjT#cS4YwQXKORlxkJCNbdbJT2h_ZC6IC-8zdOJCzEoP7To
карма: 0

0
Ответов: 146
Рейтинг: 22
#5: 2021-05-17 22:41:55 ЛС | профиль | цитата
MBO, попробуй этот пример. Будут вопросы, задавай.
https://forum.hiasm.com/getfile/39241

Редактировалось 1 раз(а), последний 2021-05-17 22:42:33
карма: 4

0
файлы: 1json to xml.zip [20.1KB] [26]
Ответов: 452
Рейтинг: 14
#6: 2021-05-17 23:12:40 ЛС | профиль | цитата
MBO писал(а):
Есть ли возможность конвертации данных из формата json в формат xml

А спарсить данные с json и записать в формат xml нельзя? Это ведь достаточно просто. Раньше так делал, но это ведь конечно нужно долго руками и головой работать. xml форматы бывают разные, универсального способа не существует, есть xml только для определенного сайта и только для него. Нужно взять готовый, правильный xml файл, изучить его, посмотреть между какими тегами данные записываются, брать FormatStr и составлять правильный xml формат по образцу который у вас должен быть. Должна быть инструкция по созданию правильного xml файла для сайта. Еще раз, они разные всегда для каждого сайта. В свое время попотел над такой задачей, правда там был просто ексель файл, а из него нужно было сделать xml

Редактировалось 2 раз(а), последний 2021-05-17 23:36:28
карма: 4

0
Ответов: 146
Рейтинг: 22
#7: 2021-05-18 06:10:39 ЛС | профиль | цитата
MBO, так, наверное, будет правильнее.
Add(MainForm,15175452,147,84)
{
link(onCreate,457631:doExecute,[])
}
Add(WinExec,11401622,308,84)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleTerminate,15175452:doClose,[(347,118)(347,139)(137,139)(137,111)])
}
Add(FormatStr,4794102,252,98)
{
Mask="$data = get-content '%1' -raw\r\n$json = convertfrom-json -inputobject $data\r\n[xml]$xml = convertto-xml -depth 100 $json -notypeinformation\r\n$result = '<?xml version='"'1.0'"' encoding='"'UTF-8'"'?>\n<root>'\r\n$result+= $xml.SelectNodes('//Property')|% { '\n\t<{0}>{1}</{0}>' -f $_.name,$_.'#text' }\r\n$result+='\n</root>'\r\n$result | set-content test.xml -Encoding unicod"
link(onFString,11401622:doConsoleExec,[])
link(Str2,15318373:Value,[])
}
Add(ODialog,457631,196,98)
{
link(onExecute,4794102:doString,[])
}
Add(Memory,15318373,259,42)
{
Default=String(test.xml)
}

схему немного откорректировал.

Редактировалось 1 раз(а), последний 2021-05-18 08:29:46
карма: 4

0
Ответов: 33
Рейтинг: 0
#8: 2021-05-18 10:01:11 ЛС | профиль | цитата
Gunta писал(а):
MBO, так, наверное, будет правильнее.
Add(MainForm,15175452,147,84)
{
link(onCreate,457631:doExecute,[])
}
Add(WinExec,11401622,308,84)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleTerminate,15175452:doClose,[(347,118)(347,139)(137,139)(137,111)])
}
Add(FormatStr,4794102,252,98)
{
Mask="$data = get-content '%1' -raw\r\n$json = convertfrom-json -inputobject $data\r\n[xml]$xml = convertto-xml -depth 100 $json -notypeinformation\r\n$result = '<?xml version='"'1.0'"' encoding='"'UTF-8'"'?>\n<root>'\r\n$result+= $xml.SelectNodes('//Property')% { '\n\t<{0}>{1}</{0}>' -f $_.name,$_.'#text' }\r\n$result+='\n</root>'\r\n$result | set-content test.xml -Encoding unicod"
link(onFString,11401622:doConsoleExec,[])
link(Str2,15318373:Value,[])
}
Add(ODialog,457631,196,98)
{
link(onExecute,4794102:doString,[])
}
Add(Memory,15318373,259,42)
{
Default=String(test.xml)
}

схему немного откорректировал.

Спасибо!
А есть способ делать это быстрее и выдавать результат в поток?
карма: 0

0
Ответов: 146
Рейтинг: 22
#9: 2021-05-21 08:12:06 ЛС | профиль | цитата
MBO, прицепил Newtonsoft.Json.dll (ссылка на документацию в схеме).
архив со схемой и dll - https://forum.hiasm.com/getfile/39242

MBO писал(а):
А есть способ делать это быстрее и выдавать результат в поток?

Да, НО, твой файл (json.txt) принят явно не в той кодировке и внутри есть куча ??? вместо кавычек и других символов.
В таком виде с ним нужно разбираться вручную.

Редактировалось 1 раз(а), последний 2021-05-21 08:17:40
карма: 4

0
файлы: 1json to xml converter.zip [275.4KB] [61]
Ответов: 33
Рейтинг: 0
#10: 2021-05-25 08:35:53 ЛС | профиль | цитата
Gunta писал(а):
MBO, прицепил Newtonsoft.Json.dll (ссылка на документацию в схеме).
архив со схемой и dll - https://forum.hiasm.com/getfile/39242

MBO писал(а):
А есть способ делать это быстрее и выдавать результат в поток?

Да, НО, твой файл (json.txt) принят явно не в той кодировке и внутри есть куча ??? вместо кавычек и других символов.
В таком виде с ним нужно разбираться вручную.

Редактировалось 1 раз(а), последний 2021-05-21 08:17:40

Понял, спасибо
А можно тогда пример нормального Json и способа его быстрой обработки (если можно, с выведением в поток)
карма: 0

0
Ответов: 146
Рейтинг: 22
#11: 2021-05-25 18:08:13 ЛС | профиль | цитата
MBO, не очень понял что ты имеешь в виду под
MBO писал(а):
выведением в поток

Это?
Add(MainForm,3416008,133,182)
{
link(onCreate,9364295:doDownload,[])
}
Add(VisualStrings,11141527,189,133)
{
Lines=#42:https://www.cbr-xml-daily.ru/daily_json.js|
Width=214
Height=25
}
Add(HTTP_Get,9364295,189,196)
{
link(onDownload,8204234:doConvert,[])
link(URL,11141527:Text,[])
}
Add(StreamConvertor,8204234,245,203)
{
Mode=6
link(onResult,9221840:doCharset,[])
}
Add(WinExec,11401622,546,189)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
Point(onErrorExec)
link(onConsoleResult,5246825:doCharset,[])
}
Add(Charset,5246825,616,203)
{
link(onCharset,4977782:doAdd,[])
}
Add(Charset,9221840,301,203)
{
Type=7
link(onCharset,9999278:doReplace,[])
}
Add(Memo,4977782,672,203)
{
Width=384
Height=261
Align=5
ScrollBars=3
}
Add(FormatStr,9433227,490,203)
{
DataCount=1
Mask="$data = @'\r\n%1\r\n'@ \r\n$json = convertfrom-json -inputobject $data\r\n[xml]$xml = convertto-xml -depth 100 $json -notypeinformation\r\n$xml.OuterXml"
link(onFString,11401622:doConsoleExec,[])
}
Add(Replace,9999278,350,203)
{
SubStr="""
DestStr="'"
link(onReplace,9433227:doString,[])
}



Редактировалось 2 раз(а), последний 2021-05-25 18:10:06
карма: 4

0
Ответов: 33
Рейтинг: 0
#12: 2021-05-26 18:54:03 ЛС | профиль | цитата
Gunta писал(а):
MBO, не очень понял что ты имеешь в виду под
MBO писал(а):
выведением в поток

Это?
Add(MainForm,3416008,133,182)
{
link(onCreate,9364295:doDownload,[])
}
Add(VisualStrings,11141527,189,133)
{
Lines=#42:https://www.cbr-xml-daily.ru/daily_json.js
Width=214
Height=25
}
Add(HTTP_Get,9364295,189,196)
{
link(onDownload,8204234:doConvert,[])
link(URL,11141527:Text,[])
}
Add(StreamConvertor,8204234,245,203)
{
Mode=6
link(onResult,9221840:doCharset,[])
}
Add(WinExec,11401622,546,189)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
Point(onErrorExec)
link(onConsoleResult,5246825:doCharset,[])
}
Add(Charset,5246825,616,203)
{
link(onCharset,4977782:doAdd,[])
}
Add(Charset,9221840,301,203)
{
Type=7
link(onCharset,9999278:doReplace,[])
}
Add(Memo,4977782,672,203)
{
Width=384
Height=261
Align=5
ScrollBars=3
}
Add(FormatStr,9433227,490,203)
{
DataCount=1
Mask="$data = @'\r\n%1\r\n'@ \r\n$json = convertfrom-json -inputobject $data\r\n[xml]$xml = convertto-xml -depth 100 $json -notypeinformation\r\n$xml.OuterXml"
link(onFString,11401622:doConsoleExec,[])
}
Add(Replace,9999278,350,203)
{
SubStr="""
DestStr="'"
link(onReplace,9433227:doString,[])
}



Редактировалось 2 раз(а), последний 2021-05-25 18:10:06

Ну что-то вроди)

Так а как же ускорить обработку такого JSon? а то даже относительно не большие файлы символов в 200 обрабатывает около 5-10 сек!
карма: 0

0
Ответов: 33
Рейтинг: 0
#13: 2021-05-26 20:21:24 ЛС | профиль | цитата
Решил делать все-таки через Newtonsoft.Json.dll
Получилась такая схема

Add(MultiElement,9194804,259,189)
{
}
BEGIN_SDK
Add(EditMulti,9559666,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
VarCount=1
Width=860
Height=557
link(doWork1,14658533:doStrCat,[(39,27)(39,195)])
}
Add(WinExec,14655721,637,322)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleTerminate,85823:doEvent1,[])
}
Add(FormatStr,2184033,581,336)
{
DataCount=3
Mask="Add-Type -Path '%1\Newtonsoft.Json.dll'\r\n$FileName = '%2'\r\n$json = (Get-Content $FileName | Out-String)\r\n[Newtonsoft.Json.JsonConvert]::DeserializeXNode($json, 'Root') | set-content %3\r\n"
link(onFString,14655721:doConsoleExec,[])
link(Str1,3456739:Var3,[(587,96)])
link(Str2,15803434:Var3,[(594,299)])
link(Str3,7164910:Var3,[(601,303)])
}
Add(Random,6570850,294,238)
{
Min=100000000
Max=999999999
link(onRandom,2477111:doString,[])
}
Add(Hub,14852155,217,154)
{
OutCount=6
link(onEvent1,10115733:doStrCat,[(259,160)(259,132)])
link(onEvent2,6570850:doRandomize,[(263,167)(263,251)])
link(onEvent3,6570850:doRandom,[(263,174)(263,244)])
link(onEvent4,6211040:doData,[(277,181)(277,398)])
link(onEvent5,2281954:doSave,[(329,188)(329,405)])
link(onEvent6,2184033:doString,[(406,195)(406,342)])
}
Add(StrList,2281954,427,371)
{
Point(doSave)
link(FileName,15803434:Var2,[(440,339)(342,339)])
}
Add(DoData,6211040,322,392)
{
link(onEventData,2281954:doText,[])
link(Data,9559666:Data1,[(328,158)(27,158)])
}
Add(GetDataEx,15803434,336,294)
{
link(Data,2477111:FString,[])
}
Add(Hub,85823,686,350)
{
OutCount=5
link(onEvent1,9984219:doLoad,[(746,356)(746,377)])
link(onEvent2,13451874:doData,[(746,363)(746,440)])
link(onEvent3,311165:doDelete,[(742,370)(742,503)])
link(onEvent4,592601:doDelete,[(766,377)(766,503)])
}
Add(StrList,9984219,791,336)
{
Point(doSave)
Point(doLoad)
link(FileName,7164910:Var2,[(804,328)(391,328)])
}
Add(GetDataEx,7164910,385,298)
{
link(Data,905766:FString,[])
}
Add(DoData,13451874,791,434)
{
link(onEventData,9559666:onEvent1,[(831,440)(831,27)])
link(Data,9984219:Text,[])
}
Add(FormatStr,2477111,336,238)
{
DataCount=3
Mask="%1cache\%2.json"
Point(FString)
link(onFString,905766:doString,[])
link(Str1,13966239:Var1,[(342,219)])
link(Str2,3059119:Var3,[(349,226)(325,226)(325,282)])
}
Add(Dir,4368278,343,168)
{
}
Add(FormatStr,905766,385,238)
{
DataCount=3
Mask="%1cache\%2.xml"
Point(FString)
link(Str1,13966239:Var3,[(391,219)])
link(Str2,3059119:Var1,[(398,226)(291,226)(291,282)])
}
Add(GetDataEx,3059119,294,277)
{
link(Data,6570850:Random,[])
}
Add(GetDataEx,13966239,343,214)
{
link(Data,4368278:CurrentDir,[])
}
Add(Dir,15926951,70,21)
{
}
Add(DirTools,5174933,350,112)
{
Point(doExists)
link(onOK,12829684:doEvent,[])
link(Source,12626745:Var2,[(356,100)(324,100)(324,219)(293,219)])
}
Add(IndexToChanel,12829684,399,112)
{
link(onEvent1,2453963:doDir,[])
}
Add(StrCat,10115733,287,126)
{
Str2="cache"
link(onStrCat,5174933:doExists,[(335,132)(335,139)])
link(Str1,5580497:Var2,[(293,114)(185,114)(185,138)(76,138)])
}
Add(FileTools,311165,784,483)
{
DelToRecycle=1
link(FileName,15803434:Var1,[(790,391)(333,391)(333,299)])
}
Add(FileTools,592601,833,483)
{
DelToRecycle=1
link(FileName,7164910:Var1,[(839,393)(382,393)(382,303)])
}
Add(Dir,2453963,518,112)
{
Point(Dir)
link(Dir,12626745:Var3,[(524,100)(410,100)(410,166)])
}
Add(GetDataEx,12626745,287,161)
{
link(Data,10115733:Result,[])
}
Add(StrCat,14658533,56,189)
{
link(onStrCat,13516623:doFileExists,[(96,195)(96,216)])
link(Str1,5580497:Var1,[(62,128)])
link(Str2,2962259:Value,[(69,139)(118,139)])
}
Add(GetDataEx,5580497,70,123)
{
link(Data,3456739:Var2,[])
}
Add(Memory,2962259,112,21)
{
Default=String(/Newtonsoft.Json.dll)
}
Add(FileTools,13516623,105,189)
{
link(onEnd,9391747:doEvent,[])
link(FileName,14658533:Result,[(111,177)(87,177)(87,233)(62,233)])
}
Add(IndexToChanel,9391747,147,189)
{
link(onEvent1,14318119:doString,[(191,195)(191,171)(156,171)(156,146)])
link(onEvent2,14852155:doEvent1,[(198,202)(198,160)])
}
Add(Message,7260888,231,70)
{
Caption="Ошибка!"
Icon=3
}
Add(FormatStr,14318119,168,140)
{
DataCount=1
Mask="Необходимый для работы программы файл Newtonsoft.Json.dll не найден в папке\r\n \r\n%1\r\n\r\nДальнейшая работа программы не возможна!\r\nПожалуйста, перезапустите программу!"
link(onFString,7260888:doMessage,[(216,146)(216,76)])
link(Str1,5580497:Var3,[(174,128)])
}
Add(GetDataEx,3456739,70,91)
{
link(Data,15926951:CurrentDir,[])
}
END_SDK

Подскажите, пожалуйста, есть ли более правильный способ выводить информацию в поток, без этого бубна с файлами?
карма: 0

0
Ответов: 146
Рейтинг: 22
#14: 2021-05-27 09:23:02 ЛС | профиль | цитата
MBO писал(а):
Подскажите, пожалуйста, есть ли более правильный способ выводить информацию в поток, без этого бубна с файлами?

ссылка на архив со схемой - https://forum.hiasm.com/getfile/39243
Время обработки около 600 миллисекунд.

Или, без всего лишнего (только не забудь рядом со схемой Newtonsoft.Json.dll положить)

Add(MainForm,10944027,154,168)
{
link(onCreate,9999278:doReplace,[])
}
Add(Charset,5246825,329,182)
{
link(onCharset,3806717:doReplace,[])
}
Add(Memo,4977782,434,182)
{
Width=384
Height=261
Align=5
ScrollBars=3
}
Add(MultiElementEx,9845988,266,182)
{
link(XML,5246825:doCharset,[])
}
BEGIN_SDK
Add(EditMultiEx,14497425,21,21)
{
WorkCount=#4:JSON|
EventCount=#3:XML|
DataCount=#5:json1|
VOffset=98
HOffset=98
link(JSON,14997909:doString,[])
}
Add(Icon,12540853,266,175)
{
@Hint=#5:#main|
Icon=[ZIPFE01000078DAD590310E803008453F8907E02FA6AB9BA3F79F7A1C6F811FDAE8E46C043EBC424AD202266FCD95179C06AC0076A9498794FD378B08846AEF1D5F1A0923699E3818623DCAC19C27283635CD990935707F9893EB3C6B0EFCE17937BDFE2D99F47BFF88DAF60BBB00C53E0BBB]
}
Add(WinExec,6274490,175,105)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9111216:doWork2,[])
link(onConsoleError,9111216:doWork3,[(228,132)])
}
Add(FormatStr,14997909,119,119)
{
DataCount=1
Mask="Add-Type -Path '.\Newtonsoft.Json.dll'\r\n$json = @'\r\n%1\r\n'@ \r\n[xml]$xml = [Newtonsoft.Json.JsonConvert]::DeserializeXNode($json, 'Root')\r\n$xml.OuterXml\r\n"
link(onFString,6274490:doConsoleExec,[])
link(Str1,14497425:json1,[])
}
Add(HubEx,9111216,224,119)
{
link(onEvent,14497425:XML,[])
}
END_SDK
Add(Replace,3806717,385,182)
{
SubStr="><"
DestStr=">\r\n<"
link(onReplace,4977782:doAdd,[])
}
Add(StrList,10279787,217,126)
{
Strings=#1:{|40: "Date": "2021-05-27T11:30:00+03:00",|48: "PreviousDate": "2021-05-26T11:30:00+03:00",|84: "PreviousURL": "\/\/www.cbr-xml-daily.ru\/archive\/2021\/05\/26\/daily_json.js",|45: "Timestamp": "2021-05-26T21:00:00+03:00",|15: "Valute": {|16: "AUD": {|27: "ID": "R01010",|29: "NumCode": "036",|30: "CharCode": "AUD",|25: "Nominal": 1,|43: "Name": "Австралийский доллар",|29: "Value": 57.1846,|31: "Previous": 56.9775|10: },|16: "AZN": {|28: "ID": "R01020A",|29: "NumCode": "944",|30: "CharCode": "AZN",|25: "Nominal": 1,|44: "Name": "Азербайджанский манат",|29: "Value": 43.2453,|31: "Previous": 43.1997|10: },|16: "GBP": {|27: "ID": "R01035",|29: "NumCode": "826",|30: "CharCode": "GBP",|25: "Nominal": 1,|63: "Name": "Фунт стерлингов Соединенного королевства",|30: "Value": 103.9506,|32: "Previous": 104.0466|10: },|16: "AMD": {|27: "ID": "R01060",|29: "NumCode": "051",|30: "CharCode": "AMD",|27: "Nominal": 100,|39: "Name": "Армянских драмов",|29: "Value": 14.1146,|31: "Previous": 14.0989|10: },|16: "BYN": {|28: "ID": "R01090B",|29: "NumCode": "933",|30: "CharCode": "BYN",|25: "Nominal": 1,|40: "Name": "Белорусский рубль",|29: "Value": 29.3168,|31: "Previous": 29.3023|10: },|16: "BGN": {|27: "ID": "R01100",|29: "NumCode": "975",|30: "CharCode": "BGN",|25: "Nominal": 1,|37: "Name": "Болгарский лев",|29: "Value": 46.0016,|31: "Previous": 45.9761|10: },|16: "BRL": {|27: "ID": "R01115",|29: "NumCode": "986",|30: "CharCode": "BRL",|25: "Nominal": 1,|39: "Name": "Бразильский реал",|29: "Value": 13.7795,|31: "Previous": 13.7953|10: },|16: "HUF": {|27: "ID": "R01135",|29: "NumCode": "348",|30: "CharCode": "HUF",|27: "Nominal": 100,|42: "Name": "Венгерских форинтов",|29: "Value": 25.7333,|31: "Previous": 25.8133|10: },|16: "HKD": {|27: "ID": "R01200",|29: "NumCode": "344",|30: "CharCode": "HKD",|26: "Nominal": 10,|43: "Name": "Гонконгских долларов",|29: "Value": 94.6521,|31: "Previous": 94.5548|10: },|16: "DKK": {|27: "ID": "R01215",|29: "NumCode": "208",|30: "CharCode": "DKK",|25: "Nominal": 1,|36: "Name": "Датская крона",|29: "Value": 12.0984,|31: "Previous": 12.0932|10: },|16: "USD": {|27: "ID": "R01235",|29: "NumCode": "840",|30: "CharCode": "USD",|25: "Nominal": 1,|33: "Name": "Доллар США",|29: "Value": 73.4737,|31: "Previous": 73.3963|10: },|16: "EUR": {|27: "ID": "R01239",|29: "NumCode": "978",|30: "CharCode": "EUR",|25: "Nominal": 1,|27: "Name": "Евро",|29: "Value": 89.9392,|31: "Previous": 89.9545|10: },|16: "INR": {|27: "ID": "R01270",|29: "NumCode": "356",|30: "CharCode": "INR",|26: "Nominal": 10,|38: "Name": "Индийских рупий",|29: "Value": 10.1089,|31: "Previous": 10.0775|10: },|16: "KZT": {|27: "ID": "R01335",|29: "NumCode": "398",|30: "CharCode": "KZT",|27: "Nominal": 100,|42: "Name": "Казахстанских тенге",|29: "Value": 17.1746,|31: "Previous": 17.1967|10: },|16: "CAD": {|27: "ID": "R01350",|29: "NumCode": "124",|30: "CharCode": "CAD",|25: "Nominal": 1,|39: "Name": "Канадский доллар",|29: "Value": 60.8427,|31: "Previous": 60.9199|10: },|16: "KGS": {|27: "ID": "R01370",|29: "NumCode": "417",|30: "CharCode": "KGS",|27: "Nominal": 100,|39: "Name": "Киргизских сомов",|29: "Value": 88.2262,|31: "Previous": 87.7379|10: },|16: "CNY": {|27: "ID": "R01375",|29: "NumCode": "156",|30: "CharCode": "CNY",|25: "Nominal": 1,|37: "Name": "Китайский юань",|29: "Value": 11.4882,|30: "Previous": 11.453|10: },|16: "MDL": {|27: "ID": "R01500",|29: "NumCode": "498",|30: "CharCode": "MDL",|26: "Nominal": 10,|38: "Name": "Молдавских леев",|29: "Value": 41.7583,|31: "Previous": 41.5843|10: },|16: "NOK": {|27: "ID": "R01535",|29: "NumCode": "578",|30: "CharCode": "NOK",|26: "Nominal": 10,|38: "Name": "Норвежских крон",|29: "Value": 88.3427,|31: "Previous": 88.3526|10: },|16: "PLN": {|27: "ID": "R01565",|29: "NumCode": "985",|30: "CharCode": "PLN",|25: "Nominal": 1,|38: "Name": "Польский злотый",|29: "Value": 20.0485,|31: "Previous": 20.0662|10: },|16: "RON": {|28: "ID": "R01585F",|29: "NumCode": "946",|30: "CharCode": "RON",|25: "Nominal": 1,|36: "Name": "Румынский лей",|29: "Value": 18.2684,|31: "Previous": 18.2587|10: },|16: "XDR": {|27: "ID": "R01589",|29: "NumCode": "960",|30: "CharCode": "XDR",|25: "Nominal": 1,|60: "Name": "СДР (специальные права заимствования)",|30: "Value": 106.2496,|31: "Previous": 105.971|10: },|16: "SGD": {|27: "ID": "R01625",|29: "NumCode": "702",|30: "CharCode": "SGD",|25: "Nominal": 1,|42: "Name": "Сингапурский доллар",|29: "Value": 55.5315,|31: "Previous": 55.3266|10: },|16: "TJS": {|27: "ID": "R01670",|29: "NumCode": "972",|30: "CharCode": "TJS",|26: "Nominal": 10,|40: "Name": "Таджикских сомони",|29: "Value": 64.4224,|31: "Previous": 64.3545|10: },|16: "TRY": {|28: "ID": "R01700J",|29: "NumCode": "949",|30: "CharCode": "TRY",|26: "Nominal": 10,|35: "Name": "Турецких лир",|29: "Value": 86.9769,|31: "Previous": 87.2415|10: },|16: "TMT": {|28: "ID": "R01710A",|29: "NumCode": "934",|30: "CharCode": "TMT",|25: "Nominal": 1,|46: "Name": "Новый туркменский манат",|29: "Value": 21.0225,|31: "Previous": 21.0004|10: },|16: "UZS": {|27: "ID": "R01717",|29: "NumCode": "860",|30: "CharCode": "UZS",|29: "Nominal": 10000,|38: "Name": "Узбекских сумов",|29: "Value": 69.3047,|30: "Previous": 69.384|10: },|16: "UAH": {|27: "ID": "R01720",|29: "NumCode": "980",|30: "CharCode": "UAH",|26: "Nominal": 10,|40: "Name": "Украинских гривен",|29: "Value": 26.6655,|31: "Previous": 26.7408|10: },|16: "CZK": {|27: "ID": "R01760",|29: "NumCode": "203",|30: "CharCode": "CZK",|26: "Nominal": 10,|35: "Name": "Чешских крон",|29: "Value": 35.3052,|31: "Previous": 35.3751|10: },|16: "SEK": {|27: "ID": "R01770",|29: "NumCode": "752",|30: "CharCode": "SEK",|26: "Nominal": 10,|36: "Name": "Шведских крон",|28: "Value": 88.656,|31: "Previous": 88.8693|10: },|16: "CHF": {|27: "ID": "R01775",|29: "NumCode": "756",|30: "CharCode": "CHF",|25: "Nominal": 1,|40: "Name": "Швейцарский франк",|29: "Value": 82.0752,|31: "Previous": 82.0621|10: },|16: "ZAR": {|27: "ID": "R01810",|29: "NumCode": "710",|30: "CharCode": "ZAR",|26: "Nominal": 10,|45: "Name": "Южноафриканских рэндов",|29: "Value": 53.1113,|31: "Previous": 52.9864|10: },|16: "KRW": {|27: "ID": "R01815",|29: "NumCode": "410",|30: "CharCode": "KRW",|28: "Nominal": 1000,|43: "Name": "Вон Республики Корея",|29: "Value": 65.7786,|31: "Previous": 65.3754|10: },|16: "JPY": {|27: "ID": "R01820",|29: "NumCode": "392",|30: "CharCode": "JPY",|27: "Nominal": 100,|35: "Name": "Японских иен",|29: "Value": 67.5031,|31: "Previous": 67.4877|9: }|5: }|1:}|
}
Add(Replace,9999278,217,182)
{
SubStr="""
DestStr="'"
link(onReplace,9845988:JSON,[])
link(Str,10279787:Text,[])
}

карма: 4

0
файлы: 1JSON-XML by DLL.zip [287.3KB] [14]
Ответов: 33
Рейтинг: 0
#15: 2021-05-27 20:20:18 ЛС | профиль | цитата
Gunta писал(а):
MBO писал(а):
Подскажите, пожалуйста, есть ли более правильный способ выводить информацию в поток, без этого бубна с файлами?

ссылка на архив со схемой - https://forum.hiasm.com/getfile/39243
Время обработки около 600 миллисекунд.

Или, без всего лишнего (только не забудь рядом со схемой Newtonsoft.Json.dll положить)

Add(MainForm,10944027,154,168)
{
link(onCreate,9999278:doReplace,[])
}
Add(Charset,5246825,329,182)
{
link(onCharset,3806717:doReplace,[])
}
Add(Memo,4977782,434,182)
{
Width=384
Height=261
Align=5
ScrollBars=3
}
Add(MultiElementEx,9845988,266,182)
{
link(XML,5246825:doCharset,[])
}
BEGIN_SDK
Add(EditMultiEx,14497425,21,21)
{
WorkCount=#4:JSON
EventCount=#3:XML|
DataCount=#5:json1|
VOffset=98
HOffset=98
link(JSON,14997909:doString,[])
}
Add(Icon,12540853,266,175)
{
@Hint=#5:#main|
Icon=[ZIPFE01000078DAD590310E803008453F8907E02FA6AB9BA3F79F7A1C6F811FDAE8E46C043EBC424AD202266FCD95179C06AC0076A9498794FD378B08846AEF1D5F1A0923699E3818623DCAC19C27283635CD990935707F9893EB3C6B0EFCE17937BDFE2D99F47BFF88DAF60BBB00C53E0BBB]
}
Add(WinExec,6274490,175,105)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9111216:doWork2,[])
link(onConsoleError,9111216:doWork3,[(228,132)])
}
Add(FormatStr,14997909,119,119)
{
DataCount=1
Mask="Add-Type -Path '.\Newtonsoft.Json.dll'\r\n$json = @'\r\n%1\r\n'@ \r\n[xml]$xml = [Newtonsoft.Json.JsonConvert]:eserializeXNode($json, 'Root')\r\n$xml.OuterXml\r\n"
link(onFString,6274490:doConsoleExec,[])
link(Str1,14497425:json1,[])
}
Add(HubEx,9111216,224,119)
{
link(onEvent,14497425:XML,[])
}
END_SDK
Add(Replace,3806717,385,182)
{
SubStr="><"
DestStr=">\r\n<"
link(onReplace,4977782:doAdd,[])
}
Add(StrList,10279787,217,126)
{
Strings=#1:{|40: "Date": "2021-05-27T11:30:00+03:00",|48: "PreviousDate": "2021-05-26T11:30:00+03:00",|84: "PreviousURL": "\/\/www.cbr-xml-daily.ru\/archive\/2021\/05\/26\/daily_json.js",|45: "Timestamp": "2021-05-26T21:00:00+03:00",|15: "Valute": {|16: "AUD": {|27: "ID": "R01010",|29: "NumCode": "036",|30: "CharCode": "AUD",|25: "Nominal": 1,|43: "Name": "Австралийский доллар",|29: "Value": 57.1846,|31: "Previous": 56.9775|10: },|16: "AZN": {|28: "ID": "R01020A",|29: "NumCode": "944",|30: "CharCode": "AZN",|25: "Nominal": 1,|44: "Name": "Азербайджанский манат",|29: "Value": 43.2453,|31: "Previous": 43.1997|10: },|16: "GBP": {|27: "ID": "R01035",|29: "NumCode": "826",|30: "CharCode": "GBP",|25: "Nominal": 1,|63: "Name": "Фунт стерлингов Соединенного королевства",|30: "Value": 103.9506,|32: "Previous": 104.0466|10: },|16: "AMD": {|27: "ID": "R01060",|29: "NumCode": "051",|30: "CharCode": "AMD",|27: "Nominal": 100,|39: "Name": "Армянских драмов",|29: "Value": 14.1146,|31: "Previous": 14.0989|10: },|16: "BYN": {|28: "ID": "R01090B",|29: "NumCode": "933",|30: "CharCode": "BYN",|25: "Nominal": 1,|40: "Name": "Белорусский рубль",|29: "Value": 29.3168,|31: "Previous": 29.3023|10: },|16: "BGN": {|27: "ID": "R01100",|29: "NumCode": "975",|30: "CharCode": "BGN",|25: "Nominal": 1,|37: "Name": "Болгарский лев",|29: "Value": 46.0016,|31: "Previous": 45.9761|10: },|16: "BRL": {|27: "ID": "R01115",|29: "NumCode": "986",|30: "CharCode": "BRL",|25: "Nominal": 1,|39: "Name": "Бразильский реал",|29: "Value": 13.7795,|31: "Previous": 13.7953|10: },|16: "HUF": {|27: "ID": "R01135",|29: "NumCode": "348",|30: "CharCode": "HUF",|27: "Nominal": 100,|42: "Name": "Венгерских форинтов",|29: "Value": 25.7333,|31: "Previous": 25.8133|10: },|16: "HKD": {|27: "ID": "R01200",|29: "NumCode": "344",|30: "CharCode": "HKD",|26: "Nominal": 10,|43: "Name": "Гонконгских долларов",|29: "Value": 94.6521,|31: "Previous": 94.5548|10: },|16: "DKK": {|27: "ID": "R01215",|29: "NumCode": "208",|30: "CharCode": "DKK",|25: "Nominal": 1,|36: "Name": "Датская крона",|29: "Value": 12.0984,|31: "Previous": 12.0932|10: },|16: "USD": {|27: "ID": "R01235",|29: "NumCode": "840",|30: "CharCode": "USD",|25: "Nominal": 1,|33: "Name": "Доллар США",|29: "Value": 73.4737,|31: "Previous": 73.3963|10: },|16: "EUR": {|27: "ID": "R01239",|29: "NumCode": "978",|30: "CharCode": "EUR",|25: "Nominal": 1,|27: "Name": "Евро",|29: "Value": 89.9392,|31: "Previous": 89.9545|10: },|16: "INR": {|27: "ID": "R01270",|29: "NumCode": "356",|30: "CharCode": "INR",|26: "Nominal": 10,|38: "Name": "Индийских рупий",|29: "Value": 10.1089,|31: "Previous": 10.0775|10: },|16: "KZT": {|27: "ID": "R01335",|29: "NumCode": "398",|30: "CharCode": "KZT",|27: "Nominal": 100,|42: "Name": "Казахстанских тенге",|29: "Value": 17.1746,|31: "Previous": 17.1967|10: },|16: "CAD": {|27: "ID": "R01350",|29: "NumCode": "124",|30: "CharCode": "CAD",|25: "Nominal": 1,|39: "Name": "Канадский доллар",|29: "Value": 60.8427,|31: "Previous": 60.9199|10: },|16: "KGS": {|27: "ID": "R01370",|29: "NumCode": "417",|30: "CharCode": "KGS",|27: "Nominal": 100,|39: "Name": "Киргизских сомов",|29: "Value": 88.2262,|31: "Previous": 87.7379|10: },|16: "CNY": {|27: "ID": "R01375",|29: "NumCode": "156",|30: "CharCode": "CNY",|25: "Nominal": 1,|37: "Name": "Китайский юань",|29: "Value": 11.4882,|30: "Previous": 11.453|10: },|16: "MDL": {|27: "ID": "R01500",|29: "NumCode": "498",|30: "CharCode": "MDL",|26: "Nominal": 10,|38: "Name": "Молдавских леев",|29: "Value": 41.7583,|31: "Previous": 41.5843|10: },|16: "NOK": {|27: "ID": "R01535",|29: "NumCode": "578",|30: "CharCode": "NOK",|26: "Nominal": 10,|38: "Name": "Норвежских крон",|29: "Value": 88.3427,|31: "Previous": 88.3526|10: },|16: "PLN": {|27: "ID": "R01565",|29: "NumCode": "985",|30: "CharCode": "PLN",|25: "Nominal": 1,|38: "Name": "Польский злотый",|29: "Value": 20.0485,|31: "Previous": 20.0662|10: },|16: "RON": {|28: "ID": "R01585F",|29: "NumCode": "946",|30: "CharCode": "RON",|25: "Nominal": 1,|36: "Name": "Румынский лей",|29: "Value": 18.2684,|31: "Previous": 18.2587|10: },|16: "XDR": {|27: "ID": "R01589",|29: "NumCode": "960",|30: "CharCode": "XDR",|25: "Nominal": 1,|60: "Name": "СДР (специальные права заимствования)",|30: "Value": 106.2496,|31: "Previous": 105.971|10: },|16: "SGD": {|27: "ID": "R01625",|29: "NumCode": "702",|30: "CharCode": "SGD",|25: "Nominal": 1,|42: "Name": "Сингапурский доллар",|29: "Value": 55.5315,|31: "Previous": 55.3266|10: },|16: "TJS": {|27: "ID": "R01670",|29: "NumCode": "972",|30: "CharCode": "TJS",|26: "Nominal": 10,|40: "Name": "Таджикских сомони",|29: "Value": 64.4224,|31: "Previous": 64.3545|10: },|16: "TRY": {|28: "ID": "R01700J",|29: "NumCode": "949",|30: "CharCode": "TRY",|26: "Nominal": 10,|35: "Name": "Турецких лир",|29: "Value": 86.9769,|31: "Previous": 87.2415|10: },|16: "TMT": {|28: "ID": "R01710A",|29: "NumCode": "934",|30: "CharCode": "TMT",|25: "Nominal": 1,|46: "Name": "Новый туркменский манат",|29: "Value": 21.0225,|31: "Previous": 21.0004|10: },|16: "UZS": {|27: "ID": "R01717",|29: "NumCode": "860",|30: "CharCode": "UZS",|29: "Nominal": 10000,|38: "Name": "Узбекских сумов",|29: "Value": 69.3047,|30: "Previous": 69.384|10: },|16: "UAH": {|27: "ID": "R01720",|29: "NumCode": "980",|30: "CharCode": "UAH",|26: "Nominal": 10,|40: "Name": "Украинских гривен",|29: "Value": 26.6655,|31: "Previous": 26.7408|10: },|16: "CZK": {|27: "ID": "R01760",|29: "NumCode": "203",|30: "CharCode": "CZK",|26: "Nominal": 10,|35: "Name": "Чешских крон",|29: "Value": 35.3052,|31: "Previous": 35.3751|10: },|16: "SEK": {|27: "ID": "R01770",|29: "NumCode": "752",|30: "CharCode": "SEK",|26: "Nominal": 10,|36: "Name": "Шведских крон",|28: "Value": 88.656,|31: "Previous": 88.8693|10: },|16: "CHF": {|27: "ID": "R01775",|29: "NumCode": "756",|30: "CharCode": "CHF",|25: "Nominal": 1,|40: "Name": "Швейцарский франк",|29: "Value": 82.0752,|31: "Previous": 82.0621|10: },|16: "ZAR": {|27: "ID": "R01810",|29: "NumCode": "710",|30: "CharCode": "ZAR",|26: "Nominal": 10,|45: "Name": "Южноафриканских рэндов",|29: "Value": 53.1113,|31: "Previous": 52.9864|10: },|16: "KRW": {|27: "ID": "R01815",|29: "NumCode": "410",|30: "CharCode": "KRW",|28: "Nominal": 1000,|43: "Name": "Вон Республики Корея",|29: "Value": 65.7786,|31: "Previous": 65.3754|10: },|16: "JPY": {|27: "ID": "R01820",|29: "NumCode": "392",|30: "CharCode": "JPY",|27: "Nominal": 100,|35: "Name": "Японских иен",|29: "Value": 67.5031,|31: "Previous": 67.4877|9: }|5: }|1:}|
}
Add(Replace,9999278,217,182)
{
SubStr="""
DestStr="'"
link(onReplace,9845988:JSON,[])
link(Str,10279787:Text,[])
}

|Спасибо, большое!
карма: 0

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