by BoBo » 19 Dec 2020, 09:30
Basierend auf folgender Anfrage:
https://www.autohotkey.com/boards/viewtopic.php?f=76&t=75826 , welche mittel ComObj eine Abfrage anstösst, wobei
WinHttp.ResponseText wie folgt retourniert:
{"abbreviation":"CET","client_ip":"37.201.192.241","datetime":"2020-12-19T10:36:07.373785+01:00","day_of_week":6,"day_of_year":354,"dst":false,"dst_from":null,"dst_offset":0,"dst_until":null,"raw_offset":3600,"timezone":"Europe/Berlin","unixtime":1608370567,"utc_datetime":"2020-12-19T09:36:07.373785+00:00","utc_offset":"+01:00","week_number":51}
... stellt sich mir, dem bekennenden RegEx-Legastheniker, die Frage wieso das ComObj-item mit vermeintlich! identischer Syntax wie ein assoziatives ArrayObject nicht direkt auswertbar zu sein scheint?? Irgendwie hatte ich laienhaftigst angenommen da geht sowas wie
WinHttp.ResponseText.datetime bzw es ließe sich etwa so übergeben:
arr := WinHttp.ResponseText ; dies ist ein ass. array. Aber Nein, nada, niente, meh ...
Also frunzt das Bo mal wieder etwas drumherum, oder, wie mein LieblingsChinese sagen würde ...
Show me yul Wok-alound!Code: Select all
; arr := {"abbreviation":"CET","client_ip":"37.201.192.241","datetime":"2020-12-19T10:36:07.373785+01:00","day_of_week":6,"day_of_year":354,"dst":false,"dst_from":null,"dst_offset":0,"dst_until":null,"raw_offset":3600,"timezone":"Europe/Berlin","unixtime":1608370567,"utc_datetime":"2020-12-19T09:36:07.373785+00:00","utc_offset":"+01:00","week_number":51}
arr := {}
WinHttp := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WinHttp.Open("GET", "http://worldtimeapi.org/api/ip", false), WinHttp.Send()
str := StrReplace(Trim(WinHttp.ResponseText,"{}"),"""","")
MsgBox % str
Loop, Parse,% str, `,
arr[StrSplit(A_LoopField,":").1] := StrSplit(A_LoopField,":").2
MsgBox % arr.datetime
Any thoughts?
Gruß BoBo
Basierend auf folgender Anfrage: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=75826 , welche mittel ComObj eine Abfrage anstösst, wobei [c]WinHttp.ResponseText[/c] wie folgt retourniert:
[c]{"abbreviation":"CET","client_ip":"37.201.192.241","datetime":"2020-12-19T10:36:07.373785+01:00","day_of_week":6,"day_of_year":354,"dst":false,"dst_from":null,"dst_offset":0,"dst_until":null,"raw_offset":3600,"timezone":"Europe/Berlin","unixtime":1608370567,"utc_datetime":"2020-12-19T09:36:07.373785+00:00","utc_offset":"+01:00","week_number":51}[/c]
... stellt sich mir, dem bekennenden RegEx-Legastheniker, die Frage wieso das ComObj-item mit vermeintlich! identischer Syntax wie ein assoziatives ArrayObject nicht direkt auswertbar zu sein scheint?? Irgendwie hatte ich laienhaftigst angenommen da geht sowas wie [c]WinHttp.ResponseText.datetime[/c] :angel: bzw es ließe sich etwa so übergeben:
[c]arr := WinHttp.ResponseText ; dies ist ein ass. array[/c]. Aber Nein, nada, niente, meh ... :think:
Also frunzt das Bo mal wieder etwas drumherum, oder, wie mein LieblingsChinese sagen würde ...
[spoiler2="Show me yul Wok-alound!"][code]
; arr := {"abbreviation":"CET","client_ip":"37.201.192.241","datetime":"2020-12-19T10:36:07.373785+01:00","day_of_week":6,"day_of_year":354,"dst":false,"dst_from":null,"dst_offset":0,"dst_until":null,"raw_offset":3600,"timezone":"Europe/Berlin","unixtime":1608370567,"utc_datetime":"2020-12-19T09:36:07.373785+00:00","utc_offset":"+01:00","week_number":51}
arr := {}
WinHttp := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WinHttp.Open("GET", "http://worldtimeapi.org/api/ip", false), WinHttp.Send()
str := StrReplace(Trim(WinHttp.ResponseText,"{}"),"""","")
MsgBox % str
Loop, Parse,% str, `,
arr[StrSplit(A_LoopField,":").1] := StrSplit(A_LoopField,":").2
MsgBox % arr.datetime[/code][/spoiler2] :mrgreen:
Any thoughts?
Gruß BoBo