[RESOLU] JSON et PHP - parsage

Eléphanteau du PHP | 16 Messages

25 août 2016, 11:02

Bonjour,
Je rencontre un soucis avec le parsage d'un fichier JSON.
Mon problème est sûrement tout bête mais je sèche complètement.
Dans l'ordre :
Mon JSON est valide ( testé sur https://jsonformatter.curiousconcept.com/ ).

Code : Tout sélectionner

{ "tab_title" : "SR - Notes de frais", "logo_mini" : "<b>N</b>DF", "logo_large" : "<b>SR</b> Notes de frais", "bienvenu" : "Bienvenu ,", "home" : "Accueil", "menu_reduire" : "Réduire le menu", "menu_profil" : "Profil", "menu_deco" : "Déconnexion", "nav_gauche_titre" : "MENU", "nav_parent_1" : "Utilisateurs", "nav_enfant_1_1" : "Créer un utilisateur", "nav_enfant_1_2" : "Gérer les utilisateurs", "nav_parent_2" : "Véhicules", "nav_enfant_2_1" : "Créer un Véhicule", "nav_enfant_2_2" : "Gérer les véhicules", "nav_parent_3" : "Notes de frais", "nav_enfant_3_1" : "Créer une note", "nav_enfant_3_2" : "Gérer les notes de frais", "docu" : "Documentation", "erreurs" : "ACTIONS EFFECTUÉES", "action_ok" : "Action effectuée.", "action_pblm" : "Un problème à été rencontré!", "action_erreur" : "Action échouée !" }
Lorsque je passe le contenus de mon JSON directement dans une variable , ça fonctionne :
ma variable contenant la JSON ($contenu) est de type string et le json_decode renvoi bien un type object.
Par contre si j'utilise le code suivant :

Code : Tout sélectionner

<?php $chemin_json = $_SERVER['DOCUMENT_ROOT'].'interface_admin_test/languages/fr.json'; // chemin OK echo $chemin_json; $contenu = file_get_contents($chemin_json); ?>
Là ma variable contenant la JSON est toujours de type string mais t le[ json_decode renvoi NULL.
Et je me retrouve de manière logique avec plein de :
Notice: Trying to get property of non-object in ....
Si quelqu'un sait où je me plante , merci de son aide précieuse ....
Cdt

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 août 2016, 11:32

Effectievemnt le JSON posté à l'air valide.
Fais un var_dump de $contenu pour voir ce que ça te ressort.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 16 Messages

25 août 2016, 11:57

Le soucis est là le :

Code : Tout sélectionner

var_dump(json_decode($contenu));
sur la variable :

Code : Tout sélectionner

$contenu = '{ "tab_title" : "CDG05 - Notes de frais", "logo_mini" : "<b>N</b>DF", "logo_large" : "<b>CDG05</b> Notes de frais", "bienvenu" : "Bienvenu ,", "home" : "Accueil", "menu_reduire" : "Réduire le menu", "menu_profil" : "Profil", "menu_deco" : "Déconnexion", "nav_gauche_titre" : "MENU", "nav_parent_1" : "Utilisateurs", "nav_enfant_1_1" : "Créer un utilisateur", "nav_enfant_1_2" : "Gérer les utilisateurs", "nav_parent_2" : "Véhicules", "nav_enfant_2_1" : "Créer un Véhicule", "nav_enfant_2_2" : "Gérer les véhicules", "nav_parent_3" : "Notes de frais", "nav_enfant_3_1" : "Créer une note", "nav_enfant_3_2" : "Gérer les notes de frais", "docu" : "Documentation", "erreurs" : "ACTIONS EFFECTUÉES", "action_ok" : "Action effectuée.", "action_pblm" : "Un problème à été rencontré!", "action_erreur" : "Action échouée !" }';
me donne :

Code : Tout sélectionner

C:\wamp64\www\interface_admin_test\index.php:49: object(stdClass)[1] public 'tab_title' => string 'CDG05 - Notes de frais' (length=22) public 'logo_mini' => string '<b>N</b>DF' (length=10) public 'logo_large' => string '<b>CDG05</b> Notes de frais' (length=27) public 'bienvenu' => string 'Bienvenu ,' (length=10) public 'home' => string 'Accueil' (length=7) public 'menu_reduire' => string 'Réduire le menu' (length=16) public 'menu_profil' => string 'Profil' (length=6) public 'menu_deco' => string 'Déconnexion' (length=12) public 'nav_gauche_titre' => string 'MENU' (length=4) public 'nav_parent_1' => string 'Utilisateurs' (length=12) public 'nav_enfant_1_1' => string 'Créer un utilisateur' (length=21) public 'nav_enfant_1_2' => string 'Gérer les utilisateurs' (length=23) public 'nav_parent_2' => string 'Véhicules' (length=10) public 'nav_enfant_2_1' => string 'Créer un Véhicule' (length=19) public 'nav_enfant_2_2' => string 'Gérer les véhicules' (length=21) public 'nav_parent_3' => string 'Notes de frais' (length=14) public 'nav_enfant_3_1' => string 'Créer une note' (length=15) public 'nav_enfant_3_2' => string 'Gérer les notes de frais' (length=25) public 'docu' => string 'Documentation' (length=13) public 'erreurs' => string 'ACTIONS EFFECTUÉES' (length=19) public 'action_ok' => string 'Action effectuée.' (length=18) public 'action_pblm' => string 'Un problème à été rencontré!' (length=33) public 'action_erreur' => string 'Action échouée !' (length=18)
Mais sur le fichier :

Code : Tout sélectionner

$chemin_json = $_SERVER['DOCUMENT_ROOT'].'interface_admin_test/languages/'.$lang.'.json'; // chemin OK echo $chemin_json; $contenu = file_get_contents($chemin_json);
J'obtient :

Code : Tout sélectionner

C:\wamp64\www\interface_admin_test\index.php:49:null
alors que le chemin est bon , j'ai même essayé en mettant le fichier JSON au même endroit que le fichier PHP... rien n'y fait

Mammouth du PHP | 2703 Messages

25 août 2016, 13:31

qu'est ce que cela affiche ?
echo $contenu;

si cela n'affiche pas ce qui est attendu, il faut regarder les droits sur le fichier.

Eléphanteau du PHP | 16 Messages

25 août 2016, 13:55

Code : Tout sélectionner

<?php $chemin_json = $_SERVER['DOCUMENT_ROOT'].'interface_admin_test/languages/'.$lang.'.json'; // chemin OK echo $chemin_json; $contenu = file_get_contents($chemin_json); echo $contenu;
m'affiche :

Code : Tout sélectionner

{ "tab_title" : "CDG05 - Notes de frais", "logo_mini" : "NDF", "logo_large" : "CDG05 Notes de frais", "bienvenu" : "Bienvenu ,", "home" : "Accueil", "menu_reduire" : "R�duire le menu", "menu_profil" : "Profil", "menu_deco" : "D�connexion", "nav_gauche_titre" : "MENU", "nav_parent_1" : "Utilisateurs", "nav_enfant_1_1" : "Cr�er un utilisateur", "nav_enfant_1_2" : "G�rer les utilisateurs", "nav_parent_2" : "V�hicules", "nav_enfant_2_1" : "Cr�er un Véhicule", "nav_enfant_2_2" : "G�rer les véhicules", "nav_parent_3" : "Notes de frais", "nav_enfant_3_1" : "Cr�er une note", "nav_enfant_3_2" : "G�rer les notes de frais", "docu" : "Documentation", "erreurs" : "ACTIONS EFFECTUÉES", "action_ok" : "Action effectu�e.", "action_pblm" : "Un probl�me � �t� rencontr�!", "action_erreur" : "Action �chou�e !" }
Et je me rend compte que c'est l'encodage UTF8 de mon fichier JSON qui fait tout déconner ......

Une fois convertis tout marche comme sur des roulette .... J'avais pensé à tout sauf à ça !!!

Merci or 1