Décoder JSON avec PHP sur plusieurs niveaux
Résolu
nik029
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
nik029 Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
nik029 Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec mon code et je n'arrive pas à le debugger. Je souhaite récupérer, en PHP, une variable très précise dans un fichier JSON. Or, j'ai du mal à récupérer la variable en question en raison du fait que le fichier JSON est à multiples niveaux.
Voici le fichier JSON en question :
etc...
Et voici mon code PHP
Avec cette requête :
Rien ne s'affiche. J'ai testé ça aussi :
Mais c'est un "NULL" qui ressort.
Ce que je souhaiterais, c'est lui dire : "écrit cette information précise sur telle ville".
Quelqu'un pourrait-il m'aider svp ? Merci d'avance.
J'ai un problème avec mon code et je n'arrive pas à le debugger. Je souhaite récupérer, en PHP, une variable très précise dans un fichier JSON. Or, j'ai du mal à récupérer la variable en question en raison du fait que le fichier JSON est à multiples niveaux.
Voici le fichier JSON en question :
[{ "ville": { "cp": "01000", "nom": "SAINT DENIS LES BOURG", "dept": "01", "cooordonnees": { "id": "1", "latitude": "4620114", "longitude": "519791", "points": [{ "id": "1", "nom": "Mag1" }, { "id": "2", "nom": "Mag2" }, { "id": "3", "nom": "Mag3" }] } } }, { "ville": { "cp": "01000", "nom": "BOURG EN BRESSE", "dept": "01", "cooordonnees": { "id": "1", "latitude": "4619566", "longitude": "522935", "points": [{ "id": "1", "nom": "Mag4" }, { "id": "2", "nom": "Mag5" }] } } }, { "ville": { "cp": "01000", "nom": "BOURG EN BRESSE", "dept": "01", "cooordonnees": { "id": "2", "latitude": "4622100", "longitude": "524500", "points": [{ "id": "1", "nom": "Mag6" }, { "id": "2", "nom": "Mag7" }, { "id": "3", "nom": "Mag8" }, { "id": "4", "nom": "Mag9" }] } } } ]
etc...
Et voici mon code PHP
$file = 'fichier.json'; $data = file_get_contents($file); //mise du fichier dans une variable $obj = json_decode($data); // décoder le flux JSON
Avec cette requête :
echo $obj['ville'][3]->cp;
Rien ne s'affiche. J'ai testé ça aussi :
$results = array_filter($obj['ville'], function($ville) { return $ville['nom'] == "BOURG EN BRESSE"; }); var_dump($results);
Mais c'est un "NULL" qui ressort.
Ce que je souhaiterais, c'est lui dire : "écrit cette information précise sur telle ville".
Quelqu'un pourrait-il m'aider svp ? Merci d'avance.
A voir également:
- Php decoder
- Comment decoder un telephone - Guide
- Easy php - Télécharger - Divers Web & Internet
- Dvd decoder - Télécharger - Conversion & Codecs
- Expert php pinterest - Télécharger - Langages
- Comment décoder un code ascii - Guide
3 réponses
Bonjour,
Fait un var_dump() de ta variable $obj pour voir quelle est la structure de données utilisées par PHP pour décoder ton fichier json. Tu devrais voir que la variable $obj est un tableau, il faut donc faire une boucle ou accéder à un élément du tableau via son index :
Chaque élément du tableau est un objet PHP (stdClass) qui possède une propriété ville, tu peux donc utiliser la syntaxe objet pour accéder à cette propriété. L'objet ville est lui même composé du plusieurs propriété (cp, nom, dpt) :
Fait un var_dump() de ta variable $obj pour voir quelle est la structure de données utilisées par PHP pour décoder ton fichier json. Tu devrais voir que la variable $obj est un tableau, il faut donc faire une boucle ou accéder à un élément du tableau via son index :
var_dump($obj[0]); var_dump($obj[1]);
Chaque élément du tableau est un objet PHP (stdClass) qui possède une propriété ville, tu peux donc utiliser la syntaxe objet pour accéder à cette propriété. L'objet ville est lui même composé du plusieurs propriété (cp, nom, dpt) :
var_dump($obj[0]->ville); var_dump($obj[0]->ville->cp);
Merci ! Par contre, je n'arrive pas à accéder jusqu'aux valeurs figurant dans la classe "points" avec cette formule :
Cela me retourne rien.
Vois-tu ce que j'aurais oublié ?
echo $obj[0]->ville->cooordonnees->points->nom;
Cela me retourne rien.
Vois-tu ce que j'aurais oublié ?
Même réponse ;) Fais un var_dump() de points, tu devrais voir que c'est également un tableau (il y a plusieurs points). Tu peux remarquer dans ton json l'utilisation de crochets [] pour définir un tableau, tandis que les accolades {} représentent des objets.
echo $obj[0]->ville->cooordonnees->points[0]->nom;