L’utilisation de guillemets

Salut
(Je suis en train d’utiliser Google Traduction)

J’ai un problème lors de l’utilisation de guillemets

Il fait varier un élément dans un virtuel de type info avec la valeur ,

"0055"

il me montre 0055. J’ai besoin de garder les guillemets.

comment je peux le faire?

Essaie avec 2 doubles côtes de chaque côté
Sans conviction

1 « J'aime »

essaye sinon en échappant les quote avec l’antislash :

\"0055\"
2 « J'aime »

Salut:

J’ai essayé ce qui suit

""0055"" >>> résultat: 0055
\"0055\" >>> résultat: \0055\
'"0055"' >>> résultat: '0055'

J’ai besoin de garder les citations car c’est pour construire une PAYLOAD en mqtt.

Bonsoir

Sans modification du plugin, toutes les doubles quotes sont supprimées.
Le plugin contient ce genre d’instruction pour les infos de type texte:

$result = str_replace('"', '', $result);

Les simples quotes semblent être conservées et devraient pouvoir être utilisées pour délimiter un texte.

1 « J'aime »

Mon problème est qu’il doit y avoir des guillemets doubles pour que le json soit correct

Salut
(Je suis en train d’utiliser Google Traduction)

J’ai un problème lors de l’enregistrement d’un PAYLOAD de type action.

Il a ce format

{"ID_TRANS": "0055", "DATE": "2020-07-17 09:06:00"}

Cependant, quand je le donne pour le sauvegarder, il le transforme en

{"ID_TRANS": 55, "DATE": "2017-11-16 09:06:00"}

Donc, dans la réponse à l’autre bout, je me trompe de format

{"DATE": "2020-07-17 09:06:02", "ERR_CODE": "E002", "ERR_MESSAGE": "Wrong JSON"}

Serait-ce un bug dans le plugin?

Oui sûrement, car le format d’origine est bien un json valide
tu peux le vérifier d’ailleurs car il y a plein de linter json disponible gratuitement sur le net.

Autre piste. L’objet de destination à peut-être un format invalide (string au lieu d’un integer)

1 « J'aime »

Salut:

Je pense que c’est le problème de Jeedom. J’ai essayé de donner ces valeurs dans un virtuel:

""0055"" >>> résultat: 0055
\"0055\" >>> résultat: \0055\
'"0055"' >>> résultat: '0055'

et "\"0055\"" ? ca devrait donner "0055" ?

"\"0055\""  >>>>  \0055\ 

Ça confirme ce que j’ai écrit dans l’autre discussion:

1 « J'aime »

Oui.
Pour respecter la norme json, il doit s’agir de doubles quotes . Je ne peux pas utiliser de simples quotes

Essayez de modifier temporairement le fichier plugins/virtual/core/class/virtual.class.php
Commentez la ligne 317 qui supprime les doubles quotes pour voir si ça fonctionne mieux.

// $result = str_replace('"', '', $result);

Quelle est la provenance de la valeur "0055" ?
Si elle existe ailleurs que dans un virtuel allez la chercher là.

J’ai commenté cette ligne mais le résultat est toujours le même

"0055" >>> 0055
root@jeedom:/var/www/html/plugins/virtual/core/class# diff virtual.class.php virtual.class.php.copy
317c317
<                                               //$result = str_replace('"', '', $result);
---
>                                               $result = str_replace('"', '', $result);

Que 0055 fait partie d’une MQTT PAYLOAD et pour respecter le format, il doit être placé entre guillemets

Bonjour,

Est-ce que tu peux montrer un peu plus de code pour voir comment tu charges les zones ?

A+
Bernard