Travailler avec JSON en PHP : parsing et sérialisation en pratique
\n\nJSON (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\nQu'est-ce que la sérialisation et le parsing JSON ?
\n\nAvant 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
PHP fournit deux fonctions principales pour ces tâches : json_encode() et json_decode(). Examinons-les en détail.
Sérialisation des données en JSON avec json_encode()
\n\nLa fonction json_encode() prend une valeur PHP (sauf les ressources) et retourne sa représentation JSON. Regardons un exemple de base :
<?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\nPar défaut, json_encode() convertit les tableaux associatifs en objets JSON. Si vous souhaitez obtenir un tableau, utilisez le drapeau JSON_FORCE_OBJECT :
<?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\nDrapeaux 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
<?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\nParsing JSON en PHP avec json_decode()
\n\nLa 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).
<?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\nTravailler avec des structures imbriquées
\n\nLe 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\nBlogs
Book Recommendations
Lire aussi
SQLite en Python : Guide pratique et conseils essentiels