Bonjour tout le monde !
Je bloque sur la compréhension des tables Json {}.
Voici une table Json envoyée dans un Label d'un VD de la HC2 (elle contient les données d'un capteur de plante verte)
[DEBUG] 10:03:31: MaChaine = {Hum:31,Tmp:20.5,Frt:28,Lum:880,Bat:82}
Elle fonctionne très bien et j'arrive a exploiter les données avec simplement ce code dans une scène :
for k,v in pairs(json.decode(MaChaine)) do
print(k.." "..v)
end
ce qui me donne :
[DEBUG] 10:03:31: Tmp 20.5
[DEBUG] 10:03:31: Lum 880
[DEBUG] 10:03:31: Frt 28
[DEBUG] 10:03:31: Bat 82
[DEBUG] 10:03:31: Hum 31
Nickel !!!
Mais si maintenant je veux ajouter également du texte (PAS QUE DES CHIFFRES) pour avoir ça :
[DEBUG] 10:08:26: MaChaine = {Tmp:20.5 C,Hum:31 %,Frt:28 uS/cm,Lum:880 Lux,Bat:82 %}
J'obtiens maintenant cette erreur :
[DEBUG] 10:08:26: line 35: unexpected character @ character: 11 0:11 [C] line:
[DEBUG] 10:08:26: {Tmp:20.5 C
Donc clairement, il n'accepte pas des caractères autres que numériques pour la table Json !!!???
Donc MaChaine reste une simple string ??!!
Vous avez des explications là-dessus ?????
PS : je peux contourner le problème avec ce script, mais alors une sacré usine à gaz...
MaChaine:gsub("([^,{}]+)", function(valeur) MonTableau[#MonTableau+1]=valeur end)
for i= 1, #MonTableau do
local MaValeur = {}
MonTableau[i]:gsub("([^:]+)", function(valeur) MaValeur[#MaValeur+1]=valeur end)
print(MaValeur[1].." "..MaValeur[2])
end
qui me donne ce que je voudrai :
[DEBUG] 10:15:20: Tmp 20.5 C
[DEBUG] 10:15:20: Hum 31 %
[DEBUG] 10:15:20: Frt 28 uS/cm
[DEBUG] 10:15:20: Lum 880 Lux
[DEBUG] 10:15:20: Bat 82 %
mais pffffffffffff....