Traitement JSON en PHP : guide complet
JSON (JavaScript Object Notation) est un format léger d'échange de données devenu le standard de facto pour les interactions entre le serveur et le client. En PHP, le travail avec JSON est implémenté nativement via l'extension json, disponible depuis PHP 5.2.0. Dans cet article, nous allons détailler les fonctions principales, la gestion des erreurs, le travail avec des structures imbriquées et les bonnes pratiques.
Fonctions principales pour travailler avec JSON
PHP fournit deux fonctions clés :
json_encode()— convertit une valeur PHP (tableau, objet, chaîne, etc.) en chaîne JSON.json_decode()— convertit une chaîne JSON en variable PHP (tableau ou objet).
Exemple : encodage d'un tableau en JSON
<?php$data = [ 'name' => 'Alice', 'age' => 30, 'is_student' => false, 'skills' => ['PHP', 'JavaScript', 'Python']];
$json = json_encode($data, JSON_PRETTY_PRINT);echo $json;?>Résultat :
{ "name": "Alice", "age": 30, "is_student": false, "skills": [ "PHP", "JavaScript", "Python" ]}Exemple : décodage JSON en tableau
<?php$jsonString = '{"name":"Bob","age":25,"is_active":true}';
// Deuxième paramètre true — retourne un tableau associatif$array = json_decode($jsonString, true);print_r($array);?>Résultat :
Array( [name] => Bob [age] => 25 [is_active] => 1)Drapeaux pour un réglage fin
Les fonctions json_encode() et json_decode() acceptent un deuxième paramètre — un masque de bits de drapeaux. Voici les plus utiles :
- JSON_PRETTY_PRINT — formate la sortie avec des indentations (pour la lisibilité).
- JSON_UNESCAPED_UNICODE — n'échappe pas les caractères Unicode (utile pour le cyrillique).
- JSON_FORCE_OBJECT — convertit de force un tableau associatif en objet.
- JSON_NUMERIC_CHECK — convertit les chaînes contenant des nombres en type numérique.
Exemple avec cyrillique et formatage
<?php$data = [ 'name' => 'Алексей', 'city' => 'Москва'];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>Résultat :
{ "name": "Алексей", "city": "Москва"}Gestion des erreurs lors du travail avec JSON
Si la chaîne d'entrée n'est pas un JSON valide, json_decode() retourne null. Pour connaître la cause exacte de l'erreur, utilisez les fonctions json_last_error() et json_last_error_msg().
<?php$invalidJson = '{name: "Alice"}'; // JSON invalide (clés sans guillemets)
$result = json_decode($invalidJson);if (json_last_error() !== JSON_ERROR_NONE) { echo 'Erreur : ' . json_last_error_msg();} else { print_r($result);}?>Sortie :
Erreur : Syntax errorListe complète des constantes d'erreur :
JSON_ERROR_NONE— aucune erreur.JSON_ERROR_DEPTH— profondeur maximale de la pile dépassée.JSON_ERROR_STATE_MISMATCH— JSON incorrect (non-concordance des parenthèses).JSON_ERROR_SYNTAX— erreur de syntaxe.JSON_ERROR_UTF8— encodage UTF-8 incorrect.
Travail avec des structures imbriquées
Le JSON contient souvent des objets et des tableaux imbriqués. PHP permet de traiter facilement ces données à l'aide de récursions ou de boucles.
<?php$complexJson = '{ "users": [ {"name": "Alice Aussi dans la bibliothèque
Mise en cache en Swift (iOS/macOS) : Redis, NSCache et Core Data
Sérialisation des objets en Java : guide complet pour débutants
conditional-type-checks TypeScript : guide complet avec exemples
GraphQL en PHP : bibliothèques webonyx/graphql-php et Lighthouse pour créer des API