Travailler avec JSON en PHP : parsing et sérialisation en pratique

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 : parsing et sérialisation en pratique

\n\n

JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu la norme pour les API web et les fichiers de configuration. En PHP, le travail avec JSON est implémenté nativement et ne nécessite pas l'installation d'extensions supplémentaires. Dans cet article, nous allons voir comment effectuer le parsing et la sérialisation de JSON en PHP avec des exemples concrets, ainsi qu'apprendre à gérer les erreurs et à travailler avec des structures imbriquées.

\n\n

Qu'est-ce que la sérialisation et le parsing JSON ?

\n\n

Avant de passer au code, définissons les concepts clés :

\n\n
    \n
  • Sérialisation — conversion d'une variable PHP (tableau, objet) en une chaîne JSON.
  • \n
  • Parsing (désérialisation) — le processus inverse : conversion d'une chaîne JSON en une variable PHP.
  • \n
\n\n

PHP fournit deux fonctions principales pour ces tâches : json_encode() et json_decode(). Examinons-les en détail.

\n\n

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

\n\n

La fonction json_encode() prend une valeur PHP (sauf les ressources) et retourne sa représentation JSON. Regardons un exemple de base :

\n\n
<?php\n$user = [\n    'name' => 'Иван Петров',\n    'age' => 28,\n    'email' => 'ivan@example.com',\n    'is_active' => true\n];\n\n$json = json_encode($user);\necho $json;\n// Sortie : {"name":"Иван Петров","age":28,"email":"ivan@example.com","is_active":true}\n?>
\n\n

Par défaut, json_encode() convertit les tableaux associatifs en objets JSON. Si vous souhaitez obtenir un tableau, utilisez le drapeau JSON_FORCE_OBJECT :

\n\n
<?php\n$numbers = [10, 20, 30];\necho json_encode($numbers); // [10,20,30]\necho json_encode($numbers, JSON_FORCE_OBJECT); // {"0":10,"1":20,"2":30}\n?>
\n\n

Drapeaux utiles de json_encode()

\n\n
    \n
  • JSON_PRETTY_PRINT — formate la sortie avec des indentations pour une meilleure lisibilité.
  • \n
  • JSON_UNESCAPED_UNICODE — n'échappe pas les caractères Unicode (lettres russes).
  • \n
  • JSON_NUMERIC_CHECK — convertit les chaînes contenant des nombres en type numérique.
  • \n
\n\n
<?php\n$data = ['product' => 'Книга', 'price' => '1500'];\n\n// Affichage formaté avec caractères russes\necho json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);\n/*\n{\n    "product": "Книга",\n    "price": "1500"\n}\n*/\n\n// Conversion automatique de la chaîne '1500' en nombre\necho json_encode($data, JSON_NUMERIC_CHECK);\n// {"product":"Книга","price":1500}\n?>
\n\n

Parsing JSON en PHP avec json_decode()

\n\n

La fonction json_decode() prend une chaîne JSON et la convertit en une variable PHP. Le deuxième paramètre $associative détermine s'il faut retourner un tableau associatif (true) ou un objet (false, par défaut).

\n\n
<?php\n$jsonString = '{"name":"Мария","age":25,"hobbies":["чтение","путешествия"]}';\n\n// Parsing en objet\n$obj = json_decode($jsonString);\necho $obj->name; // Мария\necho $obj->hobbies[0]; // чтение\n\n// Parsing en tableau associatif\n$arr = json_decode($jsonString, true);\necho $arr['age']; // 25\n?>
\n\n

Travailler avec des structures imbriquées

\n\n

Le JSON contient souvent des objets et des tableaux imbriqués. Regardons un exemple avec une API météo :

\n\n
<?php\n$weatherJson = '{\n    "city": "Москва",\n    "temperature": {\n        "current": -5,\n        "feels_like": -8\n    },\n    "forecast": [\n        {"day": "Пн", "temp": -3},\n        {"day": "Вт", "temp": -1}\n    ]\n}';\n\n$weather = json_decode($weatherJson, true);\n\necho "Température actuelle : " . $weather['temperature']['current'] . "°C\\n";\necho "Ressentie : " . $weather['temperature']['feels_like'] . "°C\\n";\n\nforeach ($weather['forecast'] as $day) {\n    echo "{$day['day']}: {$day['temp']}°C\\n";\n}\n?>
\n\n

Blogs

Book Recommendations