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"}"
?>
