Json (JavaScript Object Notation) est un format d’échange de données en JavaScript. Aucune extension n’est obligatoire pour manipuler du JSON en PHP.
Parmi les fonctions internes au langage PHP :
json_encode : cette fonction permet d’obtenir la représentation en chaîne de caractères JSON d’une variable PHP.
<?php $array = ['x' => 10, 'y' => 20]; $json = json_encode($array); var_dump($json); // "{"x":10,"y":20}" ?>
Le paramètre en entrée peut être tout type de variable PHP
json_decode : cette fonction permet de décoder une chaîne de caractères JSON afin de récupérer une variable PHP.
<?php $json = '{"x", 10, "y", 20}'; var_dump($json); /* object(stdClass)#1 (2) { ["x"] => int(10) ["y"] => int(20) } */ var_dump($json, true); /* array(2) { ["x"] => int(10) ["y"] => int(20) } */ /* Dans cet exemple, le fait de passer la valeur true en second paramètre permet de récupérer un tableau associatif au lieu d'un objet stdClass */
Vous pouvez voir aussi les deux fonctions :
Depuis PHP 5.4, l’interface JsonSerializable existe, elle définit une méthode jsonSerializable qui permet de détérminer comment un objet va réagir à la fonction json_encode
<?php JsonSerializable { /* Méthodes */ abstract public mixed jsonSerialize ( void ) } ?>
Voici un exemple d’utilisation :
<?php class Test implements JsonSerializable { private $nom; private $prenom; public function __construct($val1, $val2){ $this->nom = $val1; $this->prenom = $val2; } public function jsonSerialize(){ return 'json_encode_custom'; } } // test $test = new Test('Toldo', 'Buffon'); $json = json_encode($test); var_dump($json); // json_encode_custom /* Dans cet exemple la méthode jsonSerialize est implémentée et retourne un message customisé */ $object = new stdClass(); $object->prop1 = 'valeur1'; $json = json_encode($object); var_dump($json); // string(19) "{"prop1":"valeur1"}" ?>