(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — Retourne la représentation JSON d'une valeur
Retourne une chaîne contenant la représentation JSON de la valeur
value
.
value
La valeur à encoder. Peut être de n'importe quel type, excepté une ressource.
Cette fonction ne fonctionne qu'avec des données encodées UTF-8.
options
Masque composé des constantes
JSON_HEX_QUOT
,
JSON_HEX_TAG
,
JSON_HEX_AMP
,
JSON_HEX_APOS
,
JSON_NUMERIC_CHECK
,
JSON_PRETTY_PRINT
,
JSON_UNESCAPED_SLASHES
,
JSON_FORCE_OBJECT
,
JSON_UNESCAPED_UNICODE
. Le comportement
de ces constantes est décrit sur la
page des constantes JSON.
Retourne une chaîne encodé JSON ou FALSE
si une erreur survient.
Version | Description |
---|---|
5.4.0 |
Les options
JSON_PRETTY_PRINT ,
JSON_UNESCAPED_SLASHES et
JSON_UNESCAPED_UNICODE ont été ajoutées.
|
5.3.3 |
L'option JSON_NUMERIC_CHECK a été ajoutée.
|
5.3.0 |
Le paramètre options a été ajouté.
|
Exemple #1 Exemple avec json_encode()
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
L'exemple ci-dessus va afficher :
{"a":1,"b":2,"c":3,"d":4,"e":5}
Exemple #2 Exemple avec json_encode() montrant quelques options en action
<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");
echo "Normal : ", json_encode($a), "\n";
echo "Tags : ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos : ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot : ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp : ", json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode : ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "Toutes : ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
$b = array();
echo "Tableau vide sous forme de tableau : ", json_encode($b), "\n";
echo "Tableau vide sous forme d'objet : ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "Tableau non-associatif sous forme de tableau : ", json_encode($c), "\n";
echo "Tableau non-associatif sous forme d'objet : ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "Tableau associatif affiché comme objet: ", json_encode($d), "\n";
echo "Tableau associatif affiché comme objet: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
L'exemple ci-dessus va afficher :
Normal : ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"] Tags : ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos : ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot : ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp : ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode : ["<foo>","'bar'","\"baz\"","&blong&","é"] Toutes : ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"] Tableau vide sous forme de tableau : [] Tableau vide sous forme d'objet : {} Tableau non-associatif sous forme de tableau : [[1,2,3]] Tableau non-associatif sous forme d'objet : {"0":{"0":1,"1":2,"2":3}} Tableau associatif affiché comme objet: {"foo":"bar","baz":"long"} Tableau associatif affiché comme objet: {"foo":"bar","baz":"long"}
Exemple #3 Exemple avec un tableau séquentiel et un tableau non-séquentiel
<?php
echo "Tableau séquentiel".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
$sequential,
json_encode($sequential)
);
echo PHP_EOL."Tableau non-séquentiel".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL."Tableau séquentiel avec un clé supprimé".PHP_EOL;
unset($sequential[1]);
var_dump(
$sequential,
json_encode($sequential)
);
?>
L'exemple ci-dessus va afficher :
Tableau séquentiel array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" Tableau non-séquentiel array(4) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" } string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}" Tableau séquentiel avec un clé supprimé array(3) { [0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}"
Note:
Lorsqu'une erreur survient lors de l'encodage, la fonction json_last_error() peut être utilisée pour déterminer la nature exacte de l'erreur.
Note:
Lors de l'encodage d'un tableau, si les clés ne sont pas sous la forme d'une séquence numérique continue commençant à 0, toutes les clés seront encodées sous forme de chaînes de caractères, et spécifiées explicitement pour chaque paire clé-valeur.
Note:
Tout comme l'encodeur JSON de référence, la fonction json_encode() génèrera un JSON qui est une valeur simple (ni un objet, ni un tableau) si une chaîne de caractère, un entier, un nombre à virgule flottante, ou un booléen est fourni en entrée pour le paramètre
value
. Bien que certains décodeurs acceptent ces valeurs comme JSON valide, d'autres ne les acceptent pas, sachant que la spécification est ambiguë sur ce point.Pour résumer, testez toujours que votre décodeur JSON peut gérer la sortie que vous générez depuis la fonction json_encode().