Traitement JSON en PHP : guide complet
JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu la norme pour l'interaction entre le client et le serveur. En PHP, le travail avec JSON est implémenté nativement via les fonctions intégrées json_encode() et json_decode(). Dans cet article, nous allons détailler tous les aspects du traitement JSON en PHP : des opérations de base aux techniques avancées et à la gestion des erreurs.
Fonctions principales pour travailler avec JSON en PHP
PHP fournit deux outils clés pour le traitement JSON :
- json_encode() — convertit une valeur PHP (tableau, objet, chaîne) en chaîne JSON.
- json_decode() — décode une chaîne JSON en une valeur PHP.
Exemple d'utilisation de base de json_encode()
<?php// Données sources : tableau associatif$data = [ 'name' => 'Иван', 'age' => 30, 'skills' => ['PHP', 'JavaScript', 'Python']];
// Encodage en JSON$jsonString = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Résultat de l'exécution :
{ "name": "Иван", "age": 30, "skills": [ "PHP", "JavaScript", "Python" ]}Le drapeau JSON_UNESCAPED_UNICODE préserve le cyrillique sans échappement, et JSON_PRETTY_PRINT formate la sortie avec des indentations pour une meilleure lisibilité.
Exemple de décodage JSON en PHP
<?php$jsonString = '{"name":"Анна","age":25,"city":"Москва"}';
// Décodage en tableau associatif (deuxième argument true)$array = json_decode($jsonString, true);echo $array['name']; // Аннаecho $array['city']; // Москва
// Décodage en objet (par défaut)$object = json_decode($jsonString);echo $object->name; // Анна?>Gestion des erreurs lors du travail avec JSON
Lors du travail avec des données externes, il est important de vérifier la validité du JSON. Pour cela, utilisez json_last_error() et json_last_error_msg() :
<?php$invalidJson = '{name: "Ошибка"}'; // JSON invalide (pas de guillemets pour la clé)
$decoded = json_decode($invalidJson);
if (json_last_error() !== JSON_ERROR_NONE) { $errorMsg = json_last_error_msg(); echo "Erreur de décodage JSON : $errorMsg"; // Affichage : Erreur de décodage JSON : Syntax error}?>Travail avec des structures imbriquées
JSON est parfaitement adapté aux données hiérarchiques complexes. Considérons un exemple avec des tableaux et objets imbriqués :
<?php$complexData = [ 'users' => [ [ 'id' => 1, 'name' => 'Петр', 'orders' => [ ['product' => 'Ноутбук', 'price' => 75000], ['product' => 'Мышь', 'price' => 1500] ] ], [ 'id' => 2, 'name' => 'Мария', 'orders' => [] ] ], 'total_orders' => 2];
$json = json_encode($complexData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);file_put_contents('data.json', $json); // Sauvegarde dans un fichier
// Lecture du fichier$jsonFromFile = file_get_contents('data.json');$restoredData = json_decode($jsonFromFile, true);
// Accès aux données imbriquéesecho $restoredData['users'][0]['orders'][0]['product']; // Ноутбук?>Options avancées de json_encode()
PHP prend en charge de nombreux drapeaux pour un réglage fin de l'encodage :
JSON_FORCE_OBJECT— force l'encodage d'un tableau en objet.JSON_NUMERIC_CHECK— convertit les chaînes numériques en nombres.JSON_UNESCAPED_SLASHES— n'échappe pas les barres obliques.JSON_THROW_ON_ERROR— lève une exception en cas d'erreur (