Bonjour,
J’ai un pti soucis dans un plugin que je suis en train de développer pour interpréter un flux JSON.
Le flux JSON est stocké dans un fichier temporaire … lorsque le lit ce fichier je récupère bien mon flux json mais la conversion en Array ne fonctionne pas … j’imagine que c’est un truc gros comme moi … … mais je trouve pas … et je sais que l’oeil extérieur est toujours la solution…
Code du plugin :
$tmpFile=sys_get_temp_dir()."/testPlugin_session_".$this->id;
if (is_file($tmpFile)) {
$fd=fopen($tmpFile, "r");
$readLine=fgets($fd);
if (isset($readLine)) {
log::add('testPlugin', 'debug', " ==> Read config file .. datas $readLine");
$arrayDecode=json_decode($readline,true);
log::add('testPlugin', 'debug', " ==> encode array json get sessionID test 2: " .$arrayDecode["sessionID"]);
log::add('testPlugin', 'debug', " ==> implode array : " .implode($arrayDecode));
La log est la suivante :
==> Read config file .. datas {"sessionID":"dmo3fk5d4gw2v0nnrixkomqbt1k7tyar","sessionIDExpires":"Thu, 12-Nov-2020 13:27:05 GMT","xcsrfToken":"eYY40mGIHpnrUGvhqTO1BU0Z2sYyeoPlSexePzH9PORJKwY8F2trdmtgp6EUesRa","xcsrfTokenExpires":"Thu, 11-Nov-2021 13:07:05 GMT","pk":17067}
[2020-11-12 15:46:54][DEBUG] : ==> encode array json get sessionID test 2:
[2020-11-12 15:46:54][DEBUG] : ==> implode array :
On remarque que la ligne du fichier contenant le json est récupérée correctement mais qu’après je n’arrive pas à la convertir en array et à extraire les infos…
Du coup je me suis dit que j’allais tester dans un scénario … plus rapide pour faire les tests … le scénario est le suivant :
$scenario->setLog("Start");
$json='{"sessionID":"dmo3fk5d4gw2v0nnrixkomqbt1k7tyar","sessionIDExpires":"Thu, 12-Nov-2020 13:27:05 GMT","xcsrfToken":"eYY40mGIHpnrUGvhqTO1BU0Z2sYyeoPlSexePzH9PORJKwY8F2trdmtgp6EUesRa","xcsrfTokenExpires":"Thu, 11-Nov-2021 13:07:05 GMT","pk":17067}';
$array=json_decode($json,true);
$scenario->setLog("JSON : $json");
if (isset($array["sessionID"])) {
$scenario->setLog("Array sessionid existe : ".$array["sessionID"]);
}
$scenario->setLog("End");
Et ma log du scénario :
[2020-11-12 15:49:20][SCENARIO] Start
[2020-11-12 15:49:20][SCENARIO] JSON : {"sessionID":"dmo3fk5d4gw2v0nnrixkomqbt1k7tyar","sessionIDExpires":"Thu, 12-Nov-2020 13:27:05 GMT","xcsrfToken":"eYY40mGIHpnrUGvhqTO1BU0Z2sYyeoPlSexePzH9PORJKwY8F2trdmtgp6EUesRa","xcsrfTokenExpires":"Thu, 11-Nov-2021 13:07:05 GMT","pk":17067}
[2020-11-12 15:49:20][SCENARIO] Array sessionid existe : dmo3fk5d4gw2v0nnrixkomqbt1k7tyar
[2020-11-12 15:49:20][SCENARIO] End
Tout fonctionne parfaitement … …là question est qu’est-ce qui cloche dans le code que j’ai produit dans le plugin ?
Par avance merci pour vos retour.
Chris94440