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_STRINGest 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
