Traitement JSON en PHP : Guide complet pour travailler avec JSON

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

Traitement JSON en PHP : Guide complet



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 le client et le serveur, ainsi qu'entre différents services web. En PHP, le travail avec JSON est implémenté nativement et ne nécessite pas l'installation d'extensions supplémentaires, ce qui en fait l'un des langages les plus pratiques pour l'analyse et la génération de données JSON. Dans cet article, nous allons détailler tous les aspects du traitement JSON en PHP : des fonctions de base aux techniques avancées et à la gestion des erreurs.



Fonctions principales de PHP pour travailler avec JSON



PHP fournit deux fonctions clés pour travailler avec JSON :



  • json_encode($value, $options = 0, $depth = 512) — convertit une valeur PHP (tableau, objet, chaîne, nombre) en chaîne JSON.
  • json_decode($json, $associative = false, $depth = 512, $options = 0) — décode une chaîne JSON en une valeur PHP. Si le paramètre $associative est défini sur true, un tableau associatif est retourné, sinon un objet stdClass.


Prenons un exemple simple :



<?php// Création d'un tableau associatif$data = [    "name" => "Ivan",    "age" => 30,    "city" => "Moscou",    "skills" => ["PHP", "JavaScript", "Python"]];

// Encodage en JSON$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $json;// Affichage :// {// "name": "Ivan",// "age": 30,// "city": "Moscou",// "skills": ["PHP", "JavaScript", "Python"]// }

// Décodage en tableau$decoded = json_decode($json, true);echo $decoded['name']; // Ivan?>


Options importantes de json_encode



La fonction json_encode prend en charge de nombreux drapeaux qui modifient le comportement de l'encodage. Les plus utiles sont :



  • JSON_UNESCAPED_UNICODE — n'échappe pas les caractères Unicode (cyrillique, emojis). Sans ce drapeau, les lettres russes seront converties en \\uXXXX.
  • JSON_PRETTY_PRINT — formate la sortie avec des indentations et des sauts de ligne pour la lisibilité.
  • JSON_NUMERIC_CHECK — convertit les chaînes numériques en nombres.
  • JSON_FORCE_OBJECT — force la création d'un objet au lieu d'un tableau, même si le tableau est vide ou indexé.
  • JSON_PRESERVE_ZERO_FRACTION — conserve la partie fractionnaire pour les nombres entiers (par exemple, 10.0).


Exemple de combinaison d'options :



<?php$data = ['product' => 'Livre', 'price' => '1500.50', 'count' => 5];echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);// {"product":"Livre","price":1500.5,"count":5}?>


Traitement des structures imbriquées et des objets complexes



PHP permet de travailler avec des structures JSON profondément imbriquées. Prenons un exemple d'analyse d'une réponse complexe d'une API :



<?php// Imaginons qu'il s'agit d'une réponse d'une API externe$apiResponse = '{    "status": "success",    "data": {        "users": [            {"id": 1, "name": "Anna", "roles": ["admin", "editor"]},            {"id": 2, "name": "Pierre", "roles": ["user"]}        ],        "pagination": {            "page": 1,            "totalPages": 3        }    }}';

$parsed = json_decode($apiResponse, true);

// Récupération des noms de tous les utilisateurs$names = array_column($parsed['data']['users'], 'name');print_r($names); // Array ( [0] => Anna [1] => Pierre )

// Vérification si un utilisateur a le rôle adminforeach ($parsed['data']['users'] as $user) { if (in_array('admin', $user['roles'])) { echo "{$user['name']} a les droits d'administrateur"; }}?>


Gestion des erreurs JSON



L'un des problèmes les plus courants est un JSON incorrect. PHP fournit des fonctions pour diagnostiquer les erreurs :



  • json_last_error() — retourne

Recommendations