Talwayseb Posté(e) le 18 mars 2018 Signaler Posté(e) le 18 mars 2018 Bonsoir à tous !!! J'ai un petit souci... je n'arrive pas à formater ce code tableau : "lights": [ "1", "6", "7", "8", "9" ], Quand j'essaye de récupérer la réponse , j'obtiens soit table: 0x8a415c0, soit une erreur... bad argument #1 to 'decode' (string expected, got table) Quelqu'un à la solution ?
pepite Posté(e) le 19 mars 2018 Signaler Posté(e) le 19 mars 2018 Bonjour, Je pense que tu dois utiliser : - json.encode(variable) - json.decode(variable) ;-) 1
Talwayseb Posté(e) le 19 mars 2018 Auteur Signaler Posté(e) le 19 mars 2018 Merci @pepite !!! Comme je devais décoder la table, Je m'efforçai à utiliser json.decode, c'est ce qui me provoqué l'erreur : bad argument #1 to 'decode' (string expected, got table) Avec json.encode, c'est mieux !!! 1
Talwayseb Posté(e) le 24 mars 2018 Auteur Signaler Posté(e) le 24 mars 2018 Salut à tous !!! Je n'arrive pas à formater les strings de mon tableau {"1","6","7","8","9"} en entier {1,6,7,8,9} Avez-vous une idée pour supprimer les "" ?
Talwayseb Posté(e) le 25 mars 2018 Auteur Signaler Posté(e) le 25 mars 2018 @pepite, Pas avec un tableau... J'espérai y arriver avec string.format mais je ne trouve pas la bonne formule...
pepite Posté(e) le 25 mars 2018 Signaler Posté(e) le 25 mars 2018 Tu veux convertir TOUT le tableau ?
Talwayseb Posté(e) le 25 mars 2018 Auteur Signaler Posté(e) le 25 mars 2018 (modifié) Si possible, oui !!! Voici ce que je voudrai arriver à faire : -- Récupération des ID des Lampes du groupe HueLampes = jsonTable.lights fibaro:debug("HueLampes = " .. tostring(HueLampes)); -- Résultat : HueLampes = table: 0x9f7d770 -- Récupération du Nombre de Lampes NbreLampes = tonumber(#HueLampes) fibaro:debug("Nombre de lampe = " .. tonumber(NbreLampes)); -- Résultat : Nombre de lampe = 5 -- Décodage des ID des Lampes du groupe Lamp = json.encode(HueLampes) fibaro:debug("Lamp = " .. tostring(Lamp)); -- Résultat : Lamp = ["1","6","7","8","9"] -- Formatage de la Table Lamp = string.sub(Lamp,2,-2) Lamp = "{" .. Lamp .. "}" fibaro:debug("Lamp = " .. tostring(Lamp)); -- Résultat : Lamp = {"1","6","7","8","9"} -- Résultat voulu : Lamp = {1,6,7,8,9} -- Avec ce formatage le reste du code marche !!! -- Boucle RM états des Lampes strAffiche = "" i = 1 while i <= NbreLampes do HueLampeId = Lamp[i] fibaro:debug("HueLampeId = " .. tostring(HueLampeId)); if HueLampeId ~= nil then -- HTTP GET, pour récupérer toutes les informations du groupe de lampes Hue response = HueCMD:GET('/api/'..HueUser..'/lights/'..tostring(HueLampeId)); jsonTable = json.decode(response) if tostring(jsonTable.state.on) == "true" and tostring(jsonTable.state.reachable) == "true" then strAffiche = strAffiche .. "On" RM = "On" elseif tostring(jsonTable.state.on) == "false" and tostring(jsonTable.state.reachable) == "true" then strAffiche = strAffiche .. "Off" RM = "Off" else strAffiche = strAffiche .. "N/A" RM = "N/A" end fibaro:debug("La Lampe Hue n° " .. tostring(HueLampeId) .. " est " .. tostring(RM)); i = i + 1 -- on incrémente i fibaro:debug("Affiche = " .. tostring(strAffiche)); else strAffiche = "N/A" fibaro:debug("Affiche = N/A"); break end end -- Mise à jour des valeurs des Labels du VD fibaro:call(ID, "setProperty", "ui.RmLampes.value", strAffiche) As-tu une solution ? Modifié le 25 mars 2018 par Talwayseb
Steven Posté(e) le 25 mars 2018 Signaler Posté(e) le 25 mars 2018 HueLampes = jsonTable.lights for _, v in ipairs(HueLampes) do HueLampeId = tonumber(v) ... end Voilà comment je ferais ma boucle pour être le plus optimal possible. 1
pepite Posté(e) le 25 mars 2018 Signaler Posté(e) le 25 mars 2018 Et ben voilà :-) suffisait de demander ;-)
Messages recommandés