Travailler avec JSON en PHP : analyse et sérialisation des données

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec JSON en PHP : Guide complet d'analyse et de sérialisation



JSON (JavaScript Object Notation) est un format d'échange de données léger largement utilisé dans le développement web. PHP fournit des fonctions intégrées puissantes pour travailler avec JSON, permettant une conversion facile entre les structures PHP et les chaînes JSON. Dans cet article, nous examinerons en détail comment effectuer l'analyse (décodage) et la sérialisation (encodage) de JSON en PHP, ainsi que les erreurs typiques et les moyens de les gérer.



Qu'est-ce que JSON et pourquoi en a-t-on besoin en PHP ?



JSON est un format texte basé sur la syntaxe JavaScript. Il est utilisé pour transférer des données structurées entre un serveur et un client (par exemple, dans les API REST). En PHP, JSON est indispensable lorsque :



  • Vous échangez des données avec des API externes (par exemple, services météorologiques, systèmes de paiement)
  • Vous stockez des fichiers de configuration
  • Vous sérialisez des données pour la mise en cache
  • Vous travaillez avec des web sockets et des requêtes AJAX


PHP prend en charge le travail avec JSON depuis la version 5.2.0. Toutes les fonctions nécessaires sont intégrées au noyau — aucune extension supplémentaire n'est requise.



Sérialisation des données en JSON (json_encode)



La fonction json_encode() convertit les valeurs PHP (tableaux, objets, chaînes, nombres) en une chaîne JSON. Regardons un exemple de base :



<?php// Tableau associatif$user = [    'name' => 'Ivan Petrov',    'age' => 28,    'email' => 'ivan@example.com',    'is_active' => true,    'hobbies' => ['programming', 'chess', 'running']];

// Encodage en JSON$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>


Résultat :



{    "name": "Ivan Petrov",    "age": 28,    "email": "ivan@example.com",    "is_active": true,    "hobbies": [        "programming",        "chess",        "running"    ]}


Indicateurs importants de json_encode



  • JSON_UNESCAPED_UNICODE — préserve les caractères cyrilliques (sans cet indicateur, les caractères russes seront échappés sous forme de \\uXXXX)
  • JSON_PRETTY_PRINT — formate la sortie avec des indentations pour la lisibilité
  • JSON_NUMERIC_CHECK — convertit les chaînes numériques en nombres
  • JSON_FORCE_OBJECT — force la création d'un objet, même si un tableau vide est passé


Analyse de JSON en PHP (json_decode)



La fonction json_decode() effectue la transformation inverse — d'une chaîne JSON vers une valeur PHP. Par défaut, elle retourne un objet. Pour obtenir un tableau associatif, passez le second paramètre true :



<?php$jsonString = '{"name":"Ivan Petrov","age":28,"email":"ivan@example.com","is_active":true}';

// Décodage en objet$userObject = json_decode($jsonString);echo $userObject->name; // Ivan Petrov

// Décodage en tableau associatif$userArray = json_decode($jsonString, true);echo $userArray['name']; // Ivan Petrov?>


Profondeur d'imbrication



Le troisième paramètre de json_decode() — depth — limite la profondeur de récursion. Par défaut, il est de 512. Cela protège contre les attaques comme "l'attaque du milliard de rires" :



<?php$deepJson = '{"a":{"b":{"c":{"d":"test"}}}}';$data = json_decode($deepJson, true, 3); // Erreur si la profondeur est supérieure à 3?>


Gestion des erreurs lors du travail avec JSON



Lors de l'analyse d'un JSON invalide, json_decode() retourne null. Pour obtenir des informations détaillées sur l'erreur, utilisez json_last_error() et json_last_error_msg() :



<?php$badJson = '{"name": "Ivan", age: 28}'; // Erreur : la clé age n'est pas entre guillemets

$data = json_decode($badJson, true);

if (json_last_error() !== JSON_ERROR_NONE) {

Blogs

Book Recommendations