Rechercher une fonction PHP

json_encode

(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)

json_encodeRetourne la représentation JSON d'une valeur

Description

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

Retourne une chaîne contenant la représentation JSON de la valeur value.

  

Liste de paramètres

value

La valeur à encoder. Peut être de n'importe quel type, excepté une ressource.

Toutes les chaînes doivent être encodées UTF-8.

Note:

PHP implémente un sur-ensemble de JSON tel que spécifié dans la » RFC 7159 originale.

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_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE. Le comportement de ces constantes est décrit sur la page des constantes JSON.

depth

Définit la profondeur maximale. Doit être supérieur à zéro.

  

Valeurs de retour

Retourne une chaîne encodé JSON ou FALSE si une erreur survient.

  

Historique

Version Description
5.6.6 Ajout de la constante JSON_PRESERVE_ZERO_FRACTION pour le paramètre option.
5.5.0 Ajout du paramètre depth.
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é.

  

Exemples

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($aJSON_HEX_TAG), "\n";
echo 
"Apos : ",    json_encode($aJSON_HEX_APOS), "\n";
echo 
"Quot : ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Amp : ",     json_encode($aJSON_HEX_AMP), "\n";
echo 
"Unicode : "json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"Toutes : ",     json_encode($aJSON_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($bJSON_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($cJSON_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($dJSON_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 l'option JSON_NUMERIC_CHECK

<?php
echo "Les chaînes représentant des nombres sont automatiquement converties en nombres".PHP_EOL;
$numbers = array('+123123''-123123''1.2e3''0.00001');
var_dump(
 
$numbers,
 
json_encode($numbersJSON_NUMERIC_CHECK)
);
echo 
"Chaînes contenant des nombres non formattés proprement".PHP_EOL;
$strings = array('+a33123456789''a123');
var_dump(
 
$strings,
 
json_encode($stringsJSON_NUMERIC_CHECK)
);
?>

L'exemple ci-dessus va afficher :

Les chaînes représentant des nombres sont automatiquement converties en nombres
array(4) {
  [0]=>
  string(7) "+123123"
  [1]=>
  string(7) "-123123"
  [2]=>
  string(5) "1.2e3"
  [3]=>
  string(7) "0.00001"
}
string(28) "[123123,-123123,1200,1.0e-5]"
Chaînes contenant des nombres non formattés proprement
array(2) {
  [0]=>
  string(13) "+a33123456789"
  [1]=>
  string(4) "a123"
}
string(24) "["+a33123456789","a123"]"

Exemple #4 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 une clé supprimée".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 une clé supprimée
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Exemple #5 Exemple avec l'option JSON_PRESERVE_ZERO_FRACTION

<?php
var_dump
(json_encode(12.0JSON_PRESERVE_ZERO_FRACTION));
var_dump(json_encode(12.0));
?>

L'exemple ci-dessus va afficher :

string(4) "12.0"
string(2) "12"

  

Notes

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().

  

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.json-encode.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut