json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — Décode une chaîne JSON
Description
$json
[, bool $assoc
= false
[, int $depth
= 512
[, int $options
= 0
]]] )Récupère une chaîne encodée JSON et la convertit en une variable PHP.
Liste de paramètres
-
json
-
La chaîne
json
à décoder.Cette fonction ne traite qu'avec des données encodées avec UTF-8.
-
assoc
-
Lorsque ce paramètre vaut
TRUE
, l'objet retourné sera converti en un tableau associatif. -
depth
-
Définit la profondeur de récursion.
-
options
-
Un masque d'options JSON decode. Actuellement, seul
JSON_BIGINT_AS_STRING
est supporté (par défaut, les gros entiers sont convertis en nombres à virgule flottante)
Valeurs de retour
Retourne la valeur encodée dans le paramètre json
dans le type PHP approprié. Les valeurs true,
false et null (insensible à la casse)
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
de récursion fournie.
Exemples
Exemple #1 Exemple avec json_decode()
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
<?php
$json = '{"foo-bar": 12345}';
$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>
Exemple #3 Erreurs habituelles lors de l'utilisation de la fonction json_decode()
<?php // Les chaînes suivantes sont valides en JavaScript mais pas en JSON // Le nom et la valeur doivent être entourrés de double-guillemets. // Les simple-guillements ne sont pas valides $bad_json = "{ 'bar': 'baz' }"; json_decode($bad_json); // null // le nom doit être entourré de double-guillemets $bad_json = '{ bar: "baz" }'; json_decode($bad_json); // null // la virgule de fin n'est pas autorisée $bad_json = '{ bar: "baz", }'; json_decode($bad_json); // null ?>
Exemple #4 Erreurs avec le paramètre depth
<?php // Encode les données. $json = json_encode( array( 1 => array( 'English' => array( 'One', 'January' ), 'French' => array( 'Une', 'Janvier' ) ) ) ); // Définie les 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; } } // Affiche les erreurs pour les différentes profondeurs. foreach (range(4, 3, -1) as $depth) { var_dump(json_decode($json, true, $depth)); echo 'Dernière erreur : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL; } ?>
<?php $json = '{"number": 12345678901234567890}'; var_dump(json_decode($json)); var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING)); ?>
L'exemple ci-dessus va afficher :
object(stdClass)#1 (1) { ["number"]=> float(1.2345678901235E+19) } object(stdClass)#1 (1) { ["number"]=> string(20) "12345678901234567890" }
Notes
Note:
La spécification JSON ne fait pas partie de Javascript mais d'un sous-projet de Javascript.
Note:
Si une erreur survient lors du décodage, la fonction json_last_error() pourra être utilisée pour déterminer la nature exacte de l'erreur.
Historique
Version | Description |
---|---|
5.4.0 |
Le paramètre options a été ajouté.
|
5.3.0 | Ajout du paramètre optionnel depth .
La profondeur de récursion par défaut a augmenté de 128 à 512 |
5.2.3 | La limite a été élevée de 20 à 128 |
5.2.1 | Ajout du support du décodage JSON des types basiques. |
Voir aussi
- json_encode() - Retourne la représentation JSON d'une valeur
- json_last_error() - Retourne la dernière erreur JSON