Introduction à JSON et PHP
JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu le standard de facto pour l'interaction entre les serveurs web et les clients. Dans le développement web moderne avec PHP, vous rencontrerez JSON partout : des requêtes API aux fichiers de configuration et au stockage de données structurées.
Dans cet article, nous allons examiner deux processus fondamentaux du travail avec JSON en PHP :
- Sérialisation — conversion d'un tableau ou d'un objet PHP en chaîne JSON (fonction
json_encode()). - Analyse (désérialisation) — conversion inverse d'une chaîne JSON en variable PHP (fonction
json_decode()).
Le contenu est destiné aux développeurs PHP débutants, nous allons donc progresser du simple au complexe, avec des exemples de code détaillés.
Sérialisation des données : fonction json_encode()
La sérialisation est le processus de conversion des données de la représentation interne de PHP (tableaux, objets) en une chaîne au format JSON. Cela est nécessaire lorsque vous souhaitez envoyer des données au client (navigateur, application mobile) ou les enregistrer dans un fichier/base de données dans un format universel.
Conversion d'un tableau en JSON
Le cas le plus simple est la sérialisation d'un tableau associatif :
<?php$user = [ "name" => "Иван Петров", "age" => 28, "email" => "ivan@example.com", "is_active" => true];
$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Résultat de l'exécution :
{ "name": "Иван Петров", "age": 28, "email": "ivan@example.com", "is_active": true}Remarquez les drapeaux :
JSON_UNESCAPED_UNICODE— permet de conserver les caractères cyrilliques (sans ce drapeau, les caractères russes seront convertis en \\uXXXX).JSON_PRETTY_PRINT— formate la sortie avec des indentations pour la lisibilité (utile pour le débogage, mais augmente la taille de la chaîne).
Conversion d'un objet en JSON
Les objets PHP peuvent également être sérialisés. Seules les propriétés publiques seront incluses :
<?phpclass Product { public $id; public $title; private $secretPrice; // ne sera pas inclus dans JSON
public function __construct($id, $title, $price) { $this->id = $id; $this->title = $title; $this->secretPrice = $price; }}
$product = new Product(1, "Ноутбук", 75000);echo json_encode($product, JSON_UNESCAPED_UNICODE);// Sortie : {"id":1,"title":"Ноутбук"}?>Travail avec des structures imbriquées
JSON prend en charge l'imbrication. Les tableaux PHP de n'importe quelle profondeur sont correctement convertis :
<?php$data = [ "company" => "TechCorp", "employees" => [ ["name" => "Анна", "position" => "Разработчик"], ["name" => "Борис", "position" => "Дизайнер"] ], "address" => [ "city" => "Москва", "street" => "Тверская" ]];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>Analyse JSON : fonction json_decode()
L'analyse (désérialisation) est le processus inverse : à partir d'une chaîne JSON, nous obtenons des données que PHP peut traiter.
Obtention d'un objet
Par défaut, json_decode() retourne un objet de la classe stdClass :
<?php$jsonString = '{"name":"Иван Петров","age":28,"email":"ivan@example.com"}';$user = json_decode($jsonString);
echo $user->name; // Иван Петровecho $user->age; // 28echo $user->email; // ivan@example.com?>Obtention d'un tableau
Si vous passez le deuxième argument true, la fonction retournera un tableau associatif :
&l