jesus40 Posted December 29, 2017 Share Posted December 29, 2017 Hello friends, I need help getting data from json. I read json from url into a variable. Is possible to get volume_USD value etc. where product_id= "ETH-BTC", ? So I want get "37421.69109185" as variable. I think is better keeping it in the memory as variable. Or easier to convert it to db or csv? #include <Inet.au3> #include <json.au3> $URL="https://api.abucoins.com/products/stats" $data = _INetGetSource($URL) MsgBox("","",$data) $object=json_decode($data) local $i=0 while 1 $message=json_get($object,'[product_id]');???????????????????????????????? MsgBox("","volume_USD",$message) $i=$i+1 WEnd the json structure is here: https://api.abucoins.com/products/stats expandcollapse popup[ { "product_id": "ETH-BTC", "last": "0.05202015", "open": "0.05009375", "high": "0.05250000", "low": "0.04872420", "volume": "47.77440456", "volume_BTC": 2.48523169, "volume_USD": 37421.69109185, "volume_7d": "364.40240341", "volume_30d": "3555.83377072", "change": "3.85" }, { "product_id": "LTC-BTC", "last": "0.01737490", "open": "0.01744636", "high": "0.01779000", "low": "0.01658091", "volume": "67.62762830", "volume_BTC": 1.17502328, "volume_USD": 17941.95920676, "volume_7d": "611.57893068", "volume_30d": "3881.57766044", "change": "-0.41" }, { "product_id": "ETC-BTC", "last": "0.00191846", "open": "0.00189001", "high": "0.00198000", "low": "0.00162741", "volume": "66.48327742", "volume_BTC": 0.12754551, "volume_USD": 1947.54976323, "volume_7d": "738.94495089", "volume_30d": "4090.74712156", "change": "1.51" }, { "product_id": "ZEC-BTC", "last": "0.03466163", "open": "0.03365452", "high": "0.03466163", "low": "0.03295811", "volume": "33.40101560", "volume_BTC": 1.15773364, "volume_USD": 17677.95599574, "volume_7d": "191.15953471", "volume_30d": "887.70158297", "change": "2.99" } ] VenusProject2 1 Link to comment Share on other sites More sharing options...
Developers Popular Post Jos Posted December 29, 2017 Developers Popular Post Share Posted December 29, 2017 This should be close: #include <Inet.au3> #include <json.au3> $URL = "https://api.abucoins.com/products/stats" $data = _INetGetSource($URL) $object = json_decode($data) Local $i = 0 While 1 $product_id = json_get($object, '[' & $i & '].product_id') If @error Then ExitLoop If $product_id = "ETH-BTC" Then $volume_USD = json_get($object, '[' & $i & '].volume_USD') ConsoleWrite('$volume_USD = ' & $volume_USD & @CRLF ) ;### Debug Console EndIf $i += 1 WEnd Jos JoeBar, Jasp402, careca and 3 others 6 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
jesus40 Posted December 29, 2017 Author Share Posted December 29, 2017 thanks master, it worx like a charm +++++ Earthshine 1 Link to comment Share on other sites More sharing options...
jesus40 Posted January 11, 2018 Author Share Posted January 11, 2018 On 2017. 12. 29. at 5:08 PM, Jos said: This should be close: Jos Hello, I have another one json. I tried with the same method but its not working. I tried convert it to csv, but without success. It is different type, or I dont know.. Have You idea how to get the value of "free" where asset is "BTC"? thank You jesus40 {"makerCommission":10,"takerCommission":10,"buyerCommission":0,"sellerCommission":0,"canTrade":true,"canWithdraw":true,"canDeposit":true,"updateTime":1513881965965,"balances":[{"asset":"BTC","free":"0.00000011","locked":"0.00000000"},{"asset":"LTC","free":"0.00000022","locked":"0.00000000"},{"asset":"ETH","free":"0.00000000","locked":"0.00000000"},{"asset":"BNC","free":"0.00000000","locked":"0.00000000"},{"asset":"ICO","free":"0.00000000","locked":"0.00000000"},{"asset":"NEO","free":"0.00000000","locked":"0.00000000"},{"asset":"BNB","free":"0.00000000","locked":"0.00000000"},{"asset":"123","free":"0.00000000","locked":"0.00000000"},{"asset":"456","free":"0.00000000","locked":"0.00000000"},{"asset":"QTUM","free":"0.00000000","locked":"0.00000000"},{"asset":"EOS","free":"0.00000000","locked":"0.00000000"},{"asset":"SNT","free":"0.00000000","locked":"0.00000000"},{"asset":"BNT","free":"0.00000000","locked":"0.00000000"},{"asset":"GAS","free":"0.00000000","locked":"0.00000000"},{"asset":"BCC","free":"0.00000000","locked":"0.00000000"},{"asset":"BTM","free":"0.00000000","locked":"0.00000000"},{"asset":"USDT","free":"0.00000000","locked":"0.00000000"},{"asset":"HCC","free":"0.00000000","locked":"0.00000000"},{"asset":"HSR","free":"0.00000000","locked":"0.00000000"},{"asset":"OAX","free":"0.00000000","locked":"0.00000000"},{"asset":"DNT","free":"0.00000000","locked":"0.00000000"},{"asset":"MCO","free":"0.00000000","locked":"0.00000000"},{"asset":"ICN","free":"0.00000000","locked":"0.00000000"},{"asset":"ELC","free":"0.00000000","locked":"0.00000000"},{"asset":"PAY","free":"0.00000000","locked":"0.00000000"},{"asset":"ZRX","free":"0.00000000","locked":"0.00000000"},{"asset":"OMG","free":"0.00000000","locked":"0.00000000"},{"asset":"WTC","free":"0.00000000","locked":"0.00000000"},{"asset":"LRX","free":"0.00000000","locked":"0.00000000"},{"asset":"YOYO","free":"0.00000000","locked":"0.00000000"},{"asset":"LRC","free":"0.00000000","locked":"0.00000000"},{"asset":"LLT","free":"0.00000000","locked":"0.00000000"},{"asset":"TRX","free":"0.00000000","locked":"0.00000000"},{"asset":"FID","free":"0.00000000","locked":"0.00000000"},{"asset":"SNGLS","free":"0.00000000","locked":"0.00000000"},{"asset":"STRAT","free":"0.00000000","locked":"0.00000000"},{"asset":"BQX","free":"0.00000000","locked":"0.00000000"},{"asset":"FUN","free":"0.00000000","locked":"0.00000000"},{"asset":"KNC","free":"0.00000000","locked":"0.00000000"},{"asset":"CDT","free":"0.00000000","locked":"0.00000000"},{"asset":"XVG","free":"0.00000000","locked":"0.00000000"},{"asset":"IOTA","free":"0.00000000","locked":"0.00000000"},{"asset":"SNM","free":"0.00000000","locked":"0.00000000"},{"asset":"LINK","free":"0.00000000","locked":"0.00000000"},{"asset":"CVC","free":"0.00000000","locked":"0.00000000"},{"asset":"TNT","free":"0.00000000","locked":"0.00000000"},{"asset":"REP","free":"0.00000000","locked":"0.00000000"},{"asset":"CTR","free":"0.00000000","locked":"0.00000000"},{"asset":"MDA","free":"0.00000000","locked":"0.00000000"},{"asset":"MTL","free":"0.00000000","locked":"0.00000000"},{"asset":"SALT","free":"0.00000000","locked":"0.00000000"},{"asset":"NULS","free":"0.00000000","locked":"0.00000000"},{"asset":"SUB","free":"0.00000000","locked":"0.00000000"},{"asset":"STX","free":"0.00000000","locked":"0.00000000"},{"asset":"MTH","free":"0.00000000","locked":"0.00000000"},{"asset":"CAT","free":"0.00000000","locked":"0.00000000"},{"asset":"ADX","free":"0.00000000","locked":"0.00000000"},{"asset":"PIX","free":"0.00000000","locked":"0.00000000"},{"asset":"ETC","free":"0.00000000","locked":"0.00000000"},{"asset":"ENG","free":"0.00000000","locked":"0.00000000"},{"asset":"ZEC","free":"0.00000000","locked":"0.00000000"},{"asset":"AST","free":"0.00000000","locked":"0.00000000"},{"asset":"1ST","free":"0.00000000","locked":"0.00000000"},{"asset":"GNT","free":"0.00000000","locked":"0.00000000"},{"asset":"DGD","free":"0.00000000","locked":"0.00000000"},{"asset":"BAT","free":"0.00000000","locked":"0.00000000"},{"asset":"DASH","free":"0.00000000","locked":"0.00000000"},{"asset":"POWR","free":"0.00000000","locked":"0.00000000"},{"asset":"BTG","free":"0.00000000","locked":"0.00000000"},{"asset":"REQ","free":"0.00000000","locked":"0.00000000"},{"asset":"XMR","free":"0.00000000","locked":"0.00000000"},{"asset":"EVX","free":"0.00000000","locked":"0.00000000"},{"asset":"VIB","free":"0.00000000","locked":"0.00000000"},{"asset":"ENJ","free":"0.00000000","locked":"0.00000000"},{"asset":"VEN","free":"0.00000000","locked":"0.00000000"},{"asset":"CAG","free":"0.00000000","locked":"0.00000000"},{"asset":"EDG","free":"0.00000000","locked":"0.00000000"},{"asset":"ARK","free":"0.00000000","locked":"0.00000000"},{"asset":"XRP","free":"0.00000000","locked":"0.00000000"},{"asset":"MOD","free":"0.00000000","locked":"0.00000000"},{"asset":"AVT","free":"0.00000000","locked":"0.00000000"},{"asset":"STORJ","free":"0.00000000","locked":"0.00000000"},{"asset":"KMD","free":"0.00000000","locked":"0.00000000"},{"asset":"RCN","free":"0.00000000","locked":"0.00000000"},{"asset":"EDO","free":"0.00000000","locked":"0.00000000"},{"asset":"QASH","free":"0.00000000","locked":"0.00000000"},{"asset":"SAN","free":"0.00000000","locked":"0.00000000"},{"asset":"DATA","free":"0.00000000","locked":"0.00000000"},{"asset":"DLT","free":"0.00000000","locked":"0.00000000"},{"asset":"GUP","free":"0.00000000","locked":"0.00000000"},{"asset":"MCAP","free":"0.00000000","locked":"0.00000000"},{"asset":"MANA","free":"0.00000000","locked":"0.00000000"},{"asset":"PPT","free":"0.00000000","locked":"0.00000000"},{"asset":"OTN","free":"0.00000000","locked":"0.00000000"},{"asset":"CFD","free":"0.00000000","locked":"0.00000000"},{"asset":"RDN","free":"0.00000000","locked":"0.00000000"},{"asset":"GXS","free":"0.00000000","locked":"0.00000000"},{"asset":"AMB","free":"0.00000000","locked":"0.00000000"},{"asset":"ARN","free":"0.00000000","locked":"0.00000000"},{"asset":"BCPT","free":"0.00000000","locked":"0.00000000"},{"asset":"CND","free":"0.00000000","locked":"0.00000000"},{"asset":"GVT","free":"0.00000000","locked":"0.00000000"},{"asset":"POE","free":"0.00000000","locked":"0.00000000"},{"asset":"ALIS","free":"0.00000000","locked":"0.00000000"},{"asset":"BTS","free":"0.00000000","locked":"0.00000000"},{"asset":"FUEL","free":"0.00000000","locked":"0.00000000"},{"asset":"XZC","free":"0.00000000","locked":"0.00000000"},{"asset":"QSP","free":"0.00000000","locked":"0.00000000"},{"asset":"LSK","free":"0.00000000","locked":"0.00000000"},{"asset":"BCD","free":"0.00000000","locked":"0.00000000"},{"asset":"TNB","free":"0.00000000","locked":"0.00000000"},{"asset":"GRX","free":"0.00000000","locked":"0.00000000"},{"asset":"STAR","free":"0.00000000","locked":"0.00000000"},{"asset":"ADA","free":"0.00000000","locked":"0.00000000"},{"asset":"LEND","free":"0.00000000","locked":"0.00000000"},{"asset":"IFT","free":"0.00000000","locked":"0.00000000"},{"asset":"KICK","free":"0.00000000","locked":"0.00000000"},{"asset":"UKG","free":"0.00000000","locked":"0.00000000"},{"asset":"VOISE","free":"0.00000000","locked":"0.00000000"},{"asset":"XLM","free":"0.00000000","locked":"0.00000000"},{"asset":"CMT","free":"0.00000000","locked":"0.00000000"},{"asset":"WAVES","free":"0.00000000","locked":"0.00000000"},{"asset":"WABI","free":"0.00000000","locked":"0.00000000"},{"asset":"SBTC","free":"0.00000000","locked":"0.00000000"},{"asset":"BCX","free":"0.00000000","locked":"0.00000000"},{"asset":"GTO","free":"0.00000000","locked":"0.00000000"},{"asset":"ETF","free":"0.00000000","locked":"0.00000000"},{"asset":"ICX","free":"0.00000000","locked":"0.00000000"},{"asset":"OST","free":"0.00000000","locked":"0.00000000"},{"asset":"ELF","free":"0.00000000","locked":"0.00000000"},{"asset":"AION","free":"0.00000000","locked":"0.00000000"},{"asset":"WINGS","free":"0.00000000","locked":"0.00000000"},{"asset":"BRD","free":"0.00000000","locked":"0.00000000"},{"asset":"NEBL","free":"0.00000000","locked":"0.00000000"},{"asset":"NAV","free":"1.64000000","locked":"0.00000000"},{"asset":"VIBE","free":"0.00000000","locked":"0.00000000"},{"asset":"LUN","free":"0.00000000","locked":"0.00000000"},{"asset":"TRIG","free":"0.00774000","locked":"0.00000000"},{"asset":"APPC","free":"0.00000000","locked":"0.00000000"},{"asset":"CHAT","free":"0.00000000","locked":"0.00000000"}]} Link to comment Share on other sites More sharing options...
Developers Jos Posted January 12, 2018 Developers Share Posted January 12, 2018 (edited) Guess we can start a masterclass JSON here too. Try this one: (demo_json2.txt contains your json data) #include <Inet.au3> #include <json.au3> $data = FileRead("demo_json2.txt") $object = json_decode($data) $balances = json_get($object, '.balances') Local $i = 0 While 1 $asset = json_get($object, '.balances[' & $i & '].asset') If @error Then ExitLoop if $asset = "BTC" Then $volume_USD = json_get($object, '.balances[' & $i & '].free') ConsoleWrite('! $asset:' & $asset & ' $volume_USD = ' & $volume_USD & @CRLF) ;### Debug Console EndIf $i += 1 WEnd Jos Edited January 12, 2018 by Jos pete_wilde and jesus40 2 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
jesus40 Posted January 12, 2018 Author Share Posted January 12, 2018 39 minutes ago, Jos said: Guess we can start a masterclass JSON here too. Try this one: (demo_json2.txt contains your json data) #include <Inet.au3> #include <json.au3> $data = FileRead("demo_json2.txt") $object = json_decode($data) $balances = json_get($object, '.balances') Local $i = 0 While 1 $asset = json_get($object, '.balances[' & $i & '].asset') If @error Then ExitLoop if $asset = "BTC" Then $volume_USD = json_get($object, '.balances[' & $i & '].free') ConsoleWrite('! $asset:' & $asset & ' $volume_USD = ' & $volume_USD & @CRLF) ;### Debug Console EndIf $i += 1 WEnd Jos I deleted the strings before "balances", and looks like it worked, but Yours is much correct, thanks Link to comment Share on other sites More sharing options...
Developers Jos Posted January 12, 2018 Developers Share Posted January 12, 2018 5 hours ago, jesus40 said: I deleted the strings before "balances", and looks like it worked, but Yours is much correct, thanks Unsure what you mean by the deleted comment. The posted code works fine on the posted Data, so should work for you too....right? I am working on a script that will help to code these JSON queries by making a JSON.DUMP() function which shows the proper keys. Jos jesus40 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
jesus40 Posted January 12, 2018 Author Share Posted January 12, 2018 yes, worx fine. What I tell, i deleted this from json file, except "balances" (before You replied) {"makerCommission":10,"takerCommission":10,"buyerCommission":0,"sellerCommission":0,"canTrade":true,"canWithdraw":true,"canDeposit":true,"updateTime":1513881965965,"balances": Link to comment Share on other sites More sharing options...
Developers Jos Posted January 12, 2018 Developers Share Posted January 12, 2018 (edited) Ok... understood. Try out this Json.Dump() UDF to see whether that is helpful to determine the proper Json path. Simply feed it with the JSON string : Json_Dump($data) and run it with SciTE. It will dump the JSON in the SciTEOutput pane. Jos see here Edited January 13, 2018 by Jos jesus40 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
jesus40 Posted January 13, 2018 Author Share Posted January 13, 2018 (edited) thanks Jos, it worx. ! Error JSONGET() different! means? I tried it with this: $URL="https://api.binance.com/api/v1/exchangeInfo" $data = _INetGetSource($URL) Edited January 13, 2018 by jesus40 Link to comment Share on other sites More sharing options...
Developers Jos Posted January 13, 2018 Developers Share Posted January 13, 2018 (edited) The error means I made an mistake in the logic. There is a check build in to verify the found path and its value, so when that error is shown it means there is something wrong.... which is clearly the case here. Updated the logic and seems to be better (and simpler). see here Just give it a try and let me know if it now runs without that error. Jos Edited January 13, 2018 by Jos jesus40 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Developers Jos Posted January 13, 2018 Developers Share Posted January 13, 2018 One other update to fix an bug in case the JSON data starts with an Array: expandcollapse popup$debug = 0 #include <Inet.au3> #include <json.au3> $data = FileRead("demo_json4.htm") Global $ObjLevel = -1 ;~ Global $ObjPath = "" Global $object = Json_Decode($data) Json_Dump($data) ;[0].id Func Json_Dump($Json, $InitTokenCount = 1000) Static $Jsmn_Init = __Jsmn_RuntimeLoader("jsmn_init"), $Jsmn_Parse = __Jsmn_RuntimeLoader("jsmn_parse") If $Json = "" Then $Json = '""' Local $TokenList, $Ret Local $Parser = DllStructCreate("uint pos;int toknext;int toksuper") Do DllCallAddress("none:cdecl", $Jsmn_Init, "ptr", DllStructGetPtr($Parser)) $TokenList = DllStructCreate("byte[" & ($InitTokenCount * 20) & "]") $Ret = DllCallAddress("int:cdecl", $Jsmn_Parse, "ptr", DllStructGetPtr($Parser), "wstr", $Json, "ptr", DllStructGetPtr($TokenList), "uint", $InitTokenCount) $InitTokenCount *= 2 Until $Ret[0] <> $JSMN_ERROR_NOMEM Local $Next = 0 _Json_TokenDump($Json, DllStructGetPtr($TokenList), $Next) EndFunc ;==>Json_Dump Func _Json_TokenDump(ByRef $Json, $Ptr, ByRef $Next, $ObjPath = "") If $Next = -1 Then Return Null Local $Token = DllStructCreate("int;int;int;int", $Ptr + ($Next * 20)) Local $Type = DllStructGetData($Token, 1) Local $Start = DllStructGetData($Token, 2) Local $End = DllStructGetData($Token, 3) Local $Size = DllStructGetData($Token, 4) $Next += 1 If $Type = 0 And $Start = 0 And $End = 0 And $Size = 0 Then ; Null Item $Next = -1 Return Null EndIf Switch $Type Case 0 ; Json_PRIMITIVE Local $Primitive = StringMid($Json, $Start + 1, $End - $Start) Switch $Primitive Case "true" Return True Case "false" Return False Case "null" Return Null Case Else If StringRegExp($Primitive, "^[+\-0-9]") Then Return Number($Primitive) Else Return Json_StringDecode($Primitive) EndIf EndSwitch Case 1 ; Json_OBJECT $ObjLevel += 1 If $debug Then ConsoleWrite('###>- Start objectlevel=' & $ObjLevel & " $Next=" & $Next & " $ObjPath:" & $ObjPath & " Size:" & $Size & @CRLF) ;### Debug Console For $i = 0 To $Size - 1 Step 2 Local $Key = _Json_TokenDump($Json, $Ptr, $Next) $cObjPath = $ObjPath & "." & $Key If $debug Then ConsoleWrite('+>- Start objectlevel=' & $ObjLevel & " $Next=" & $Next & " $cObjPath:" & $cObjPath & " Size:" & $Size & @CRLF) ;### Debug Console Local $Value = _Json_TokenDump($Json, $Ptr, $Next, $ObjPath & "." & $Key) If $debug Then ConsoleWrite('-<- Return objectlevel=' & $ObjLevel & " $Next=" & $Next & " $cObjPath:" & $ObjPath & " Size:" & $Size & @CRLF) ;### Debug Console If Not ($Value = False) Then If Not IsString($Key) Then $Key = Json_Encode($Key) EndIf If $ObjLevel <= 0 Then $CurJSONKey = "." & $Key EndIf ; show the key and its value ConsoleWrite("+-> " & $cObjPath & ' =' & $Value & @CRLF) If json_get($object, $cObjPath) <> $Value Then ConsoleWrite("! Error JSONGET() different! " & $cObjPath & '=' & $Value & ' JSONGET("' & $cObjPath & '")=' & json_get($object, $cObjPath) & @CRLF) EndIf EndIf Next If $debug Then ConsoleWrite('###< End object ' & $Next & @CRLF) ;### Debug Console $ObjLevel -= 1 Return False Case 2 ; Json_ARRAY Local $sObjPath = $ObjPath If $debug Then ConsoleWrite('$$$> Start Json_ARRAY:' & $ObjPath & " Size:" & $Size & @CRLF) ;### Debug Console Local $Array[$Size] For $i = 0 To $Size - 1 $sObjPath = $ObjPath & "[" & $i & "]" If $debug Then ConsoleWrite('$$$> TokenDump _ARRAY:' & $sObjPath & " Size:" & $Size & @CRLF) ;### Debug Console $Value = _Json_TokenDump($Json, $Ptr, $Next, $sObjPath) If $Value <> False Then ; show the key and its value ConsoleWrite("+=> " & $sObjPath & "=>" & $Value & @CRLF) EndIf Next If $debug Then ConsoleWrite('$$$< End Json_ARRAY:' & $ObjPath & @CRLF) ;### Debug Console $ObjPath = $sObjPath Return False Case 3 ; Json_STRING Local $LastKey = Json_StringDecode(StringMid($Json, $Start + 1, $End - $Start)) If $debug Then ConsoleWrite("=>" & $ObjPath & "." & $LastKey & ' (JSON STRING)' & @CRLF) Return $LastKey EndSwitch EndFunc ;==>_Json_TokenDump Jos tarretarretarre and jesus40 2 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
jesus40 Posted January 13, 2018 Author Share Posted January 13, 2018 (edited) thx Jos, it is working like a charm. It really helped me. Edited January 13, 2018 by jesus40 Link to comment Share on other sites More sharing options...
Developers Jos Posted January 13, 2018 Developers Share Posted January 13, 2018 You are welcome Jos ps, could you please refrain quoting the whole post each time as it makes it much harder to read for everybody. jesus40 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Developers Jos Posted January 13, 2018 Developers Share Posted January 13, 2018 Updated the original UDF post in Examples too and added the JsonDump() to the latest version. Jos jesus40, mojomatt and VenusProject2 2 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Ranjith789 Posted May 7, 2020 Share Posted May 7, 2020 Hi, Been badly stuck with this issue. Please help. I want to read the Value of Keys inside a nested Json as below: {"result" : {"RITM0911888" : { "sys_id" : "887970961bac54103985a82bbc4bcb20", "number":"SPTASK5791324", "priority":"4", "opened_by":"687e3673378d8050de381d8643990e96", "opened_at":"2020-05-05 07:38:17", "short_description":"Global Onboarding Request", "employee_status":"new_User", "First_Name":"Kirk", "Middle_Name":"Patrick" }}} Here, I want to read the Values for the different Keys inside the child-items such as 'sys_id', 'priority', 'First_Name'. How can I get inside the json and retrieve these individual values to variables. Please help. Link to comment Share on other sites More sharing options...
Developers Jos Posted May 7, 2020 Developers Share Posted May 7, 2020 So, what have you done? Did you try using Json_Dump() on that file to get this and figure out how the structure is: +-> .result.RITM0911888.sys_id =887970961bac54103985a82bbc4bcb20 +-> .result.RITM0911888.number =SPTASK5791324 +-> .result.RITM0911888.priority =4 +-> .result.RITM0911888.opened_by =687e3673378d8050de381d8643990e96 +-> .result.RITM0911888.opened_at =2020-05-05 07:38:17 +-> .result.RITM0911888.short_description =Global Onboarding Request +-> .result.RITM0911888.employee_status =new_User +-> .result.RITM0911888.First_Name =Kirk +-> .result.RITM0911888.Middle_Name =Patrick Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Ranjith789 Posted May 8, 2020 Share Posted May 8, 2020 Hey Jos, Thanks for the swift response. I used JSON_Dump and able to retrieve till RITM. But not able to parse /retrieve the values from inner key-value pairs. Like I am unable to parse .result.RITM0911888.sys_id OR .result.RITM0911888.number... and so on... Please help on how can I lop through inner key-value pairs to retrieve the values. Link to comment Share on other sites More sharing options...
Developers Jos Posted May 8, 2020 Developers Share Posted May 8, 2020 Well that should be pretty simple and something like this: (demo_json13.htm contains your json data in this case) #include "json.au3" $data = FileRead("demo_json13.htm") Json_Dump($data) $object = json_decode($data) $sys_id = json_get($object, '.result.RITM0911888.sys_id') $number = json_get($object, '.result.RITM0911888.number') ConsoleWrite('! $sys_id = ' & $sys_id & ' $number = ' & $number & @CRLF ) Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Ranjith789 Posted May 8, 2020 Share Posted May 8, 2020 Tried this out. But the responses are empty Also tried without . notation like $sys_id = json_get($object, '["result"} [RITM0911888]["sys_id"]') Both approaches are giving empty responses. Link to comment Share on other sites More sharing options...
Recommended Posts