json_decode Décode une chaîne JSON &reftitle.description; mixedjson_decode stringjson boolnullassociative&null; intdepth512 intflags0 Récupère une chaîne encodée JSON et la convertit en une variable PHP. &reftitle.parameters; json La &string; json à décoder. Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8. &json.implementation.superset; associative Lorsque ce paramètre vaut &true;, les objets JSON seront retournés comme tableaux associatifs ; lorsque ce paramètre vaut &false;, les objets JSON seront retournés comme des objets. Lorsque ce paramètre vaut &null;, les objets JSON seront retournés comme des tableaux associatifs ou des objets, suivant si la constante JSON_OBJECT_AS_ARRAY a été définie dans le paramètre flags. depth Profondeur d'imbrication maximale de la structure en cours de décodage. flags Masque de bit compris de JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR. Le comportement de ces constantes est décrite sur la page des constantes JSON. &reftitle.returnvalues; Retourne la valeur encodée dans le paramètre json dans le type PHP approprié. Les valeurs true, false et null sont retournées respectivement comme &true;, &false; et &null;. &null; est retourné si le paramètre json n'a pu être décodé ou si les données encodées sont plus profondes que la limite d'imbrication fournie. &reftitle.changelog; &Version; &Description; 7.3.0 Le flags JSON_THROW_ON_ERROR a été ajouté. 7.2.0 Le paramètre associative est désormais nullable. 7.2.0 Les flags JSON_INVALID_UTF8_IGNORE, et JSON_INVALID_UTF8_SUBSTITUTE ont été ajouté. 7.1.0 Une clé JSON vide ("") peut être encodée dans la propriété d'objet vide au lieu d'utiliser une clé avec la valeur _empty_. &reftitle.examples; Exemple avec <function>json_decode</function> ]]> &example.outputs; int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } ]]> Accès à des propriétés d'objet invalides Accéder à des éléments d'un objet qui contiennent des caractères non permis par la convention de nommage de PHP (i.e. le trait d'union) peut être effectué en encapsulant le nom de l'élément avec des crochets et des apostrophes. {'foo-bar'}; // 12345 ?> ]]> Erreurs habituelles lors de l'utilisation de la fonction <function>json_decode</function> ]]> Erreurs avec le paramètre <parameter>depth</parameter> array -> array -> string) $json = json_encode( array( 1 => array( 'English' => array( 'One', 'January' ), 'French' => array( 'Une', 'Janvier' ) ) ) ); // Définition des erreurs $constants = get_defined_constants(true); $json_errors = array(); foreach ($constants["json"] as $name => $value) { if (!strncmp($name, "JSON_ERROR_", 11)) { $json_errors[$value] = $name; } } $json = json_encode( array( 1 => array( 'English' => array( 'One', 'January' ), 'French' => array( 'Une', 'Janvier' ) ) ) ); // Affichage des erreurs pour des niveau d'imbrication différentes. var_dump(json_decode($json, true, 4)); echo 'Last error: ', json_last_error_msg(), PHP_EOL, PHP_EOL; var_dump(json_decode($json, true, 3)); echo 'Last error: ', json_last_error_msg(), PHP_EOL, PHP_EOL; ?> ]]> &example.outputs; array(2) { ["English"]=> array(2) { [0]=> string(3) "One" [1]=> string(7) "January" } ["French"]=> array(2) { [0]=> string(3) "Une" [1]=> string(7) "Janvier" } } } Last error: No error NULL Last error: Maximum stack depth exceeded ]]> Exemple avec <function>json_decode</function> et de gros entiers ]]> &example.outputs; float(1.2345678901235E+19) } object(stdClass)#1 (1) { ["number"]=> string(20) "12345678901234567890" } ]]> &reftitle.notes; La spécification JSON ne fait pas partie de Javascript mais d'un sous-projet de Javascript. Si une erreur survient lors du décodage, la fonction json_last_error (ou json_last_error_msg avec PHP5.5+) pourra être utilisée pour déterminer la nature exacte de l'erreur. &reftitle.seealso; json_encode json_last_error