en lua, comment mettre le contenu d'un fichier au format json dans une table?

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

en lua, comment mettre le contenu d'un fichier au format json dans une table?

Message par papoo »

bonjour,
en lua, je souhaite réutiliser le contenu complet d'un fichier json sans l'ouvrir plusieurs fois.
il me faut donc le contenu de ce fichier dans une table afin d'exploiter les données via une fonction, tout au long de mon script.
exemple de contenu du fichier .json :

Code : Tout sélectionner

[
    {
    "Name": "aaa",
    "Value": "123"
    }
    {
    "Name": "bbb",
    "Value": "234"
    }
    {
    "Name": "ccc",
    "Value": "345"
    }
]
pour lire le fichier pas de problème :

Code : Tout sélectionner

function Json2table(file)
    local f = io.open(file, "rb")
	if(f == nil) then
		return ""
	else
		local content = f:read("*all")
		f:close()
        jsonValeur = json:decode(content)
		return jsonValeur
	end
mais ensuite comment exploiter le contenu complet de jsonValeur plusieurs fois?
avec par exemple un if

Code : Tout sélectionner

if Value == 234 then 
     nom = Name
end
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: en lua, comment mettre le contenu d'un fichier au format json dans une table?

Message par papoo »

j'ai une solution même si je ne sais pas si c'est la meilleure

Code : Tout sélectionner

maTable= {}
maTable = json2table(fichier_json)

function searchName(maTable, value)
    for index, variable in pairs(maTable) do
        if variable.Value == value then
            name = variable.Name
        end
    end
    return name
end
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre