Aller au contenu

PB utilisation json.encode et json.decode dans un VD


Messages recommandés

Posté(e) (modifié)

J'ai un souci relativement bizarre, dans un VD lorsque j'essai d'encoder une variable tableau, j'ai une erreur lors du deuxième encodage alors que le premier fonctionne bien :

 

Voici mon code :

  local Tableau = {}
  for i= 1 , 3 do
    Tableau["Test"..i] = i
  end
  fibaro:debug("Encodage1="..json.encode(Tableau))

  local HC2 = Net.FHttp("127.0.0.1",11111)
  local response = HC2:GET("/api/virtualDevices/"..fibaro:getSelfId())
  local status, json = pcall(function() return json.decode(response) end)
                
  fibaro:debug("Encodage2="..json.encode(Tableau))

J'obtiens le résultat suivant :

[DEBUG] 13:19:58: Encodage1={"Test3":3,"Test1":1,"Test2":2}
[ERROR] 13:19:58: line 11: attempt to call field 'encode' (a nil value)

L'erreur se produit dès que je positionne le deuxième encodage après une fonction d'encodage.

 

Ca fait des heures que je recherche la cause et je ne trouve pas. Auriez-vous une idée de l'origine de ce problème et la solution ?

 

Modifié par MAM78
Posté(e)

La ligne :

local status, json = pcall(function() return json.decode(response) end)

déclare la variable json qui ne possède pas la méthode encode utilisée dans l'affichage Encodage2. En lui donnant un autre nom, toto par exemple, cela fonctionne:

local status, toto = pcall(function() return json.decode(response) end)
×
×
  • Créer...