Pb JSON differents

Bonjour à tous,

J’ai un souci que je ne comprends pas.
J’ai un bloc code qui récupère un JSON du plugin-meteofrance et que je n’arrive pas à « decoder » (json_decode)

mon scenario

// Votre JSON
$jsonData1 = cmd::byString("#[Météo][JC - Météo France][Météo jour 0 - Json]#")->execCmd();

// Votre JSON
$jsonData2 = '{"dt":1701302400,"T":{"min":1.2,"max":12.6,"sea":null},"humidity":{"min":75,"max":100},"precipitation":{"24h":12.5},"uv":1,"weather12H":{"icon":"p13j","desc":"Pluies éparses"},"sun":{"rise":1701327611,"set":1701360090},"dt12H":1701342000}';

$scenario->setLog($jsonData1) ;
$scenario->setLog($jsonData2) ;
if ($jsonData1 == $jsonData2) $scenario->setLog("json identiques");
else $scenario->setLog("json differents");

mon jsonData1 correspond à la valeur de la commande
mon jsonData2, correspond à un copier coller de la valeur de la commande

si je les affichent cote à cote, les 2 valeurs sembles rigoureusement identiques

`le slogs du bout du scenario :

0085|[2023-11-30 17:13:07][SCENARIO] Exécution d'un bloc code 
0086|[2023-11-30 17:13:07][SCENARIO] {"dt":1701302400,"T":{"min":1.2,"max":12.6,"sea":null},"humidity":{"min":75,"max":100},"precipitation":{"24h":12.5},"uv":1,"weather12H":{"icon":"p13j","desc":"Pluies éparses"},"sun":{"rise":1701327611,"set":1701360090},"dt12H":1701342000}
0087|[2023-11-30 17:13:07][SCENARIO] {"dt":1701302400,"T":{"min":1.2,"max":12.6,"sea":null},"humidity":{"min":75,"max":100},"precipitation":{"24h":12.5},"uv":1,"weather12H":{"icon":"p13j","desc":"Pluies éparses"},"sun":{"rise":1701327611,"set":1701360090},"dt12H":1701342000}
0088|[2023-11-30 17:13:07][SCENARIO] json differents

si je fais un test, ca m’indique des valeurs differentes

le jsonData1 ne se decode pas avec json_decode (celui issue de la commande)
le jsonData2 est OK et se decode bien !

Une idée ? (je suis sur que c’est evident, mais je ne vois rien)

Norbert

C’est le même code qu’ici?

Il y apas mal de messages de soucis avec le json meteofrance.

Antoine

Bonsoir,

Je te conseil, d’activer l’option log brut dans le log du scénario :wink:, tu constatera que les 2 chaines ne sont pas identique, car les caractères spéciaux dans le $jsonData1 sont transformé par leurs entités HTML.

test en rajoutant avant tes setLog :
$jsonData1 = htmlspecialchars_decode($jsonData1);

Je crois bien que j’ai eu également des problèmes avec json_decode avant de trouver sur le forum la fonction meteofrance::getJsonInfo que j’utilise dans le code mentionné par Antoine, et qui fonctionne sans souci chez moi.

Merci !
effectivement, en log btrut, c’est pas vraiment la meme chose !!!

0086|[2023-11-30 17:13:07][SCENARIO] {"dt":1701302400,"T":{"min":1.2,"max":12.6,"sea":null},"humidity":{"min":75,"max":100},"precipitation":{"24h":12.5},"uv":1,"weather12H":{"icon":"p13j","desc":"Pluies éparses"},"sun":{"rise":1701327611,"set":1701360090},"dt12H":1701342000}
0087|[2023-11-30 17:13:07][SCENARIO] {"dt":1701302400,"T":{"min":1.2,"max":12.6,"sea":null},"humidity":{"min":75,"max":100},"precipitation":{"24h":12.5},"uv":1,"weather12H":{"icon":"p13j","desc":"Pluies éparses"},"sun":{"rise":1701327611,"set":1701360090},"dt12H":1701342000}

Effectivement, c’ets vachement plus simple, top !!!

et c’est exactement ce que je souhaitais faire, récupérer le nom de l’icone d’une JSON meteofrance

Norbert

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.