Приветствую всех, кто это читает. Возникла необходимость получить данные о погоде и связать их с одной игрой. Написал, пока что, парсер погоды в Москве (выводит текущее состояние и температуру). Собственно, сам код:
json = (loadfile "/opt/test/json.lua")()
http = require("socket.http")
function try(f, catch_f)
local status, exception = pcall(f)
if not status then
catch_f(exception)
end
end
try(function()
local res = http.request("http://api.openweathermap.org/data/2.5/weather?id=524901&units=metric&lang=en&APPID=тут api ключ")
local data = json:decode(res)
print("conditions:", data['weather'][0]['main'])
print("temp:", data['main']['temp'])
end, function(e)
print("Exception (weather):", e)
end)
Сразу же покажу JSON, который получаю:
{"coord":{"lon":37.62,"lat":55.75},
"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],
"base":"stations",
"main":{"temp":26.5,"pressure":1008,"humidity":44,"temp_min":25,"temp_max":27}}
(JSON не весь, а только та часть, с которой работаю.)
Так вот, проблема с этой строчкой
print("conditions:", data['weather'][0]['main'])
Отладчик говорит следующее про эту строчку:
attempt to index a nil value
Как это исправить? После питона и сишарпа не могу понять, в чем проблема.