12 votes

Décodage PHP JSON - stdClass

J'avais une question sur la création d'un Chaîne JSON 2D

Maintenant, je voudrais savoir pourquoi je ne peux pas accéder à ce qui suit :

$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';

$j_string_decoded = json_decode($json_str);
// echo print_r($j_string_decoded); // OK

// test get url from second item
echo j_string_decoded['urls'][1];
// Fatal error: Cannot use object of type stdClass as array

27voto

Sarfraz Points 168484

Vous y accédez avec une syntaxe de type tableau :

echo j_string_decoded['urls'][1];

Alors que l'objet est renvoyé.

Convertissez-le en tableau en spécifiant le second argument de la fonction true :

$j_string_decoded = json_decode($json_str, true);

Je le fais :

$json_str = '{"urls":["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';

$j_string_decoded = json_decode($json_str, true);
echo j_string_decoded['urls'][1];

Ou essayez ceci :

$j_string_decoded->urls[1]

Remarquez le -> opérateur utilisé pour les objets.

Citation de Docs :

Retourne la valeur encodée en json dans type PHP approprié. Valeurs true, false et null (insensible à la casse) sont sont renvoyées comme VRAI, FAUX et NULL. respectivement. NULL est retourné si le json ne peut pas être décodé ou si les données codées sont plus profondes que la limite de récursion.

http://php.net/manual/en/function.json-decode.php

7voto

Victor Nicollet Points 16924

json_decode transforme par défaut les dictionnaires JSON en objets PHP, de sorte que vous accédez à votre valeur en tant que $j_string_decoded->urls[1]

Ou vous pouvez passer un argument supplémentaire comme json_decode($json_str,true) pour qu'il renvoie des tableaux associatifs, ce qui serait alors compatible avec $j_string_decoded['urls'][1]

6voto

netcoder Points 31874

Utilisez :

json_decode($jsonstring, true);

pour retourner un tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X