LogicMachine Forum
api, nesting too deep - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: api, nesting too deep (/showthread.php?tid=4334)



api, nesting too deep - Dré - 30.10.2022

I was trying to make a script, but with reading this data i got the message 'nesting too deep' (below script).
Can i do anything to read also that part of the API?

Code:
require('json') require('socket.http') require("ltn12") socket.http.TIMEOUT = 800 local data,_, code, headers, status, ret local response = {}         _, code, headers, status = socket.http.request{             url='https://ergast.com/api/f1/current/last/results.json',             sink = ltn12.sink.table(response),                           } ret = table.concat(response) data = json.pdecode(ret) if not data then          log('Formule 1: cannot parse data') return end log(data) -- sent data to log

Part of the results, some data i got, but deeper data i it dont, as the message shows.
Code:
["Results"]           * table:            [1]             * table:              nesting too deep            [2]             * table:              nesting too deep            [3]             * table:              nesting too deep



RE: api, nesting too deep - admin - 31.10.2022

Nesting limit is needed to prevent recursive tables. Without this limit such code will cause an infinite loop when logging:
Code:
t = {} t.t = t log(t)

You can use an external JSON viewer to find which fields you need from the whole JSON table. Keep in mind that Lua indexing starts from 1 instead of 0. This will log the relevant data:
Code:
require('json') require('socket.http') url = 'https://ergast.com/api/f1/current/last/results.json' data = socket.http.request(url) data = json.pdecode(data) if type(data) == 'table' then   log(data.MRData.RaceTable.Races) end



RE: api, nesting too deep - Dré - 31.10.2022

Thanks again, it is working