120 votes

json_encode/json_decode - renvoie stdClass au lieu de Array en PHP

Observez ce petit script :

$array = array('stuff' => 'things');
print_r($array);
//prints - Array ( [stuff] => things )
$arrayEncoded = json_encode($array);
echo $arrayEncoded . "<br />";
//prints - {"stuff":"things"}
$arrayDecoded = json_decode($arrayEncoded);
print_r($arrayDecoded);
//prints - stdClass Object ( [stuff] => things )

Pourquoi PHP transforme-t-il l'objet JSON en une classe ?

Est-ce qu'un tableau qui est json_encoded puis json_decoded donnent EXACTEMENT le même résultat ?

152voto

VolkerK Points 54118

Regardez de plus près le deuxième paramètre de json_decode($json, $assoc, $depth) sur http://docs.php.net/json_decode

91voto

Kai Chan Points 1662
$arrayDecoded = json_decode($arrayEncoded, true);

vous donne un tableau.

0voto

cwd Points 8723

Il existe également une bonne bibliothèque de codage/décodage de json en PHP 4 (qui est même compatible avec PHP 5), décrite dans cet article de blog : Utilisation de json_encode() et json_decode() en PHP4 (juin 2009) .

Le code concret est de Michal Migurski et de Matt Knapp :

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