45 lines
1.7 KiB
Lua
45 lines
1.7 KiB
Lua
-- Chargement de la bibliothèque Lua pour effectuer des requêtes HTTP
|
|
local http = require("socket.http")
|
|
local json = require("json")
|
|
|
|
-- Fonction pour effectuer une requête HTTP et renvoyer le contenu JSON en tant que tableau
|
|
function getJsonFromUrl(url)
|
|
local response = http.request(url) -- Effectue la requête HTTP
|
|
return json.decode(response) -- Décode la réponse JSON en tant que tableau
|
|
end
|
|
|
|
-- Fonction récursive pour rechercher une valeur dans un tableau multidimensionnel
|
|
function searchValueInTable(value, tbl)
|
|
for k, v in pairs(tbl) do
|
|
if v == value then
|
|
return k -- Retourne la clé si la valeur est trouvée
|
|
elseif type(v) == "table" then
|
|
local result = searchValueInTable(value, v) -- Appel récursif si la valeur est un tableau
|
|
if result then
|
|
return k .. "." .. result -- Retourne la clé trouvée concaténée avec la clé actuelle
|
|
end
|
|
end
|
|
end
|
|
return nil -- Retourne nil si la valeur n'est pas trouvée
|
|
end
|
|
|
|
-- Exemple d'utilisation
|
|
local url = "http://api.openweathermap.org/data/2.5/weather?q=La gacilly,fr&APPID=feba3f4d926db3b358a25ec782bd1c8b&lang=FR&units=metric" -- URL à appeler
|
|
local jsonData = getJsonFromUrl(url) -- Appel de la fonction pour obtenir le tableau JSON
|
|
|
|
-- Affichage du contenu du tableau JSON
|
|
for k, v in pairs(jsonData) do
|
|
print(k, v)
|
|
end
|
|
|
|
-- Recherche d'une valeur spécifique dans le tableau JSON
|
|
local searchValue = "valeurRecherchee"
|
|
local searchResult = searchValueInTable(searchValue, jsonData)
|
|
|
|
if searchResult then
|
|
print("La valeur", searchValue, "a été trouvée à la clé", searchResult)
|
|
else
|
|
print("La valeur", searchValue, "n'a pas été trouvée dans le tableau")
|
|
end
|
|
|