Problème avec Json

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec Json

Re: Problème avec Json

par yann18 » 12 nov. 2014, 22:52

la fonction json-decode renvoie un tableau d'objet que si le second paramètre est soit omis soit mis à false. Ce second paramètre étant optionnel, dans ton cas tu le mettais à true ce qui t'empêchais de récupérer un tableau d'objet.

L'exemple de jojolapine est bien juste à condition d'omettre le second paramètre ou de le mettre à faux:


   $jr = json_decode($resultavatar); // équivaut à    $jr = json_decode($resultavatar, false);
 foreach($jr->response->players as $player){
    var_dump($player->personaname);
}

Re: Problème avec Json

par SuGl1 » 12 nov. 2014, 17:42

Ah, merci, je ne l'avais pas vu :mrgreen:

Donc ce code marche parfaitement, merci beaucoup de votre aide !! :D
echo $jr['response']['players'][0]['personaname'];
Je suis un gros boulet, quelqu'un peut m'expliquer comment fonctionne ce code ? Je pensais que la réponse retournée était des objets :|

Re: Problème avec Json

par Spols » 12 nov. 2014, 17:28

Essaye le code de Yann18

Re: Problème avec Json

par SuGl1 » 12 nov. 2014, 17:26

Bonjour,
désolé d'être aussi nul, mais que ce soit :

Code : Tout sélectionner

var_dump($jr->response->players[0]->personaname);
Ou :

Code : Tout sélectionner

foreach($jr->response->players as $player){ var_dump($player->personaname); }
Ca me renvoie NULL :(

Re: Problème avec Json

par jojolapine » 12 nov. 2014, 13:55

Effectivement :)

Mea culpa, mais alors dans ce cas là, soit SuGl1 teste bizarrement les var_dump...
Soit il a une version de php qui donne un autre résultat que le notre, soit le debug n'est pas du tout compris :)

car le code que j'ai donné précédemment donne null pour chaque argument (sauf le premier)...

bref....

Re: Problème avec Json

par yann18 » 12 nov. 2014, 12:58

à priori yann18 ta réponse est fausse ;)
Les premiers éléments sont bien des objets.
Seulement l'entrée "players" est un tableau d'objets.
non je ne pense pas que ma réponse soit fausse.En passant true comme second paramètre de la fonction json_decode( ), le tableau d'objet est converti en tableau associatif: d'où ma notation tableau.

Re: Problème avec Json

par jojolapine » 12 nov. 2014, 11:18

à priori yann18 ta réponse est fausse ;)
Les premiers éléments sont bien des objets.
Seulement l'entrée "players" est un tableau d'objets.

ça donnerait donc ceci :
var_dump($jr->response->players[0]->personaname);
où pour afficher tout les "players" :
foreach($jr->response->players as $player){
    var_dump($player->personaname);
}

Re: Problème avec Json

par yann18 » 11 nov. 2014, 20:22

$jr['response']['players'] étant un tableau,pour récupérer le 1er élément du tableau comme personaname:
   $jr = json_decode($resultavatar, true);
echo $jr['response']['players'][0]['personaname'];
Par itération, on peut récuperer tous les personaname(ou tous les autres éléments) du tableau $jr['response']['players'] :

foreach($jr['response']['players'] as $v ){
   echo $v['personaname'];
}

Re: Problème avec Json

par SuGl1 » 11 nov. 2014, 19:30

Après plusieurs tentatives je n'arrive à rien, quelqu'un peux me donner des pistes ? :cry:

Re: Problème avec Json

par SuGl1 » 10 nov. 2014, 18:35

J'avais remarqué l'utilisation des tableaux, mais je n'y comprends rien, les deux premières variables sont des objets et la dernière un tableau ? 8-|
Oui je suis un boulet, désolé...

Re: Problème avec Json

par jojolapine » 10 nov. 2014, 18:16

Bonjour,

Et que donne la troisième ligne ?
à priori quelque chose comme :

Code : Tout sélectionner

array(1) { [0]=> stdclass ...
Ce qui veut dire que $jr->response->players est un tableau.

Et comment accède-t-on aux entrées d'un tableau en php ?

Re: Problème avec Json

par SuGl1 » 10 nov. 2014, 18:04

Salut,
J'ai essayé de débugger mais j'ai du mal m'y prendre :|
Effectivement, la 4ème ligne me renvoie "NULL" mais je n'arrive pas à comprendre d'où viens le soucis. J'ai re fait la même chose avec une autre chaine json, tout allait bien :x

Re: Problème avec Json

par jojolapine » 09 nov. 2014, 23:56

Bonsoir,

Premièrement : on ne peut pas dire à ta place où est le problème...
C'est à toi de nous indiquer quel est le problème et ensuite on pourra éventuellement t'indiquer ou t'orienter vers une solution à ce problème !

Supposons que ton problème soit que tu n'arrives pas à afficher la variable "personaname".
As-tu essayé de debugger ton code ?

Quelque chose comme ça par exemple :
<?php

$jr = json_decode($resultavatar, true);

var_dump(
    $jr,
    $jr->response,
    $jr->response->players,
    $jr->response->players->personaname
);
Tu te rendras compte qu'il y a un problème sur la quatrième ligne du var_dump....

Je te laisse chercher ;)

Bon courage !

Problème avec Json

par SuGl1 » 09 nov. 2014, 22:29

Bonjour,
j'ai une chaine json à décoder qui est la suivante :

Code : Tout sélectionner

{ "response": { "players": [ { "steamid": "**********", "communityvisibilitystate": 3, "profilestate": 1, "personaname": "*****", "lastlogoff": *****, "profileurl": "http://steamcommunity.com/id/*****/", "avatar": "http://media.steampowered.com/steamcommunity/publ ic/images/****", "avatarmedium": "http://media.steampowered.com/steamcommunity/publ ic/images/******", "avatarfull": "http://media.steampowered.com/steamcommunity/publ ic/images/*****", "personastate": 1, "realname": "N/A", "primaryclanid": "********", "timecreated": ****, "personastateflags": 0 } ] } }
Et voici mon code pour récupérer "avatar"

Code : Tout sélectionner

$jr = json_decode($resultavatar, true); echo $jr->response->players->personaname;
Quelqu'un peut me dire où est le problème ? :(
Merci