Introduction : pourquoi le JSON en PHP ressemble-t-il à un fouillis ?
\n\nImaginez la situation : vous avez écrit un script PHP qui récupère des données d'une API ou génère une réponse pour le frontend. Vous affichez le résultat avec echo json_encode($data) — et vous obtenez dans le navigateur ou la console quelque chose comme :
{"users":[{"id":1,"name":"Иван","email":"ivan@example.com"},{"id":2,"name":"Мария","email":"maria@example.com"}]}\n\nAvouez que lire cette chaîne sans formatage revient à essayer de déchiffrer l'écriture d'un médecin. Surtout si les données sont nombreuses et la hiérarchie profonde. C'est là que le pretty-printing JSON en PHP vient à la rescousse.
\n\nCet article est destiné à ceux qui commencent tout juste à travailler avec PHP et JSON. Nous allons voir comment rendre l'affichage JSON beau, lisible et pratique pour le débogage. Vous apprendrez non seulement les méthodes de base, mais aussi des astuces utiles qui vous feront gagner des heures de frustration. C'est parti !
\n\nQu'est-ce que le pretty-print et pourquoi en a-t-on besoin ?
\n\nPretty-print (littéralement « belle impression ») est le formatage des données avec des indentations, des sauts de ligne et un alignement. Dans le cas du JSON, cela signifie qu'au lieu d'une longue chaîne, vous obtenez une sortie structurée où chaque clé et chaque valeur sont à leur place.
\n\nImaginez que vous déboguez une requête API ou vérifiez un fichier de configuration. Sans pretty-print, vous perdrez un temps fou à essayer de comprendre où se termine un objet et où commence un autre. Avec le formatage, tout est clair comme de l'eau de roche.
\n\nEn PHP, il existe plusieurs façons d'obtenir un bel affichage JSON. Nous commencerons par la plus simple et la plus populaire : l'utilisation du flag JSON_PRETTY_PRINT.
Méthode 1 : JSON_PRETTY_PRINT — votre meilleur ami
\n\nLa façon la plus simple de faire du pretty-print JSON en PHP est d'utiliser la constante JSON_PRETTY_PRINT lors de l'appel à la fonction json_encode(). Cette constante est disponible depuis PHP 5.4.0.
Exemple de base
\n\n<?php\n$data = [\n 'users' => [\n ['id' => 1, 'name' => 'Иван', 'email' => 'ivan@example.com'],\n ['id' => 2, 'name' => 'Мария', 'email' => 'maria@example.com']\n ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>\n\nRésultat :
\n\n{\n "users": [\n {\n "id": 1,\n "name": "Иван",\n "email": "ivan@example.com"\n },\n {\n "id": 2,\n "name": "Мария",\n "email": "maria@example.com"\n }\n ]\n}\n\nBien mieux, n'est-ce pas ? Chaque élément du tableau est maintenant sur une ligne séparée, les indentations sont en place, la structure se lit intuitivement.
\n\nCombinaison avec d'autres flags
\n\nJSON_PRETTY_PRINT peut et doit être combiné avec d'autres flags pour un réglage plus fin. Par exemple :
- \n
- JSON_UNESCAPED_UNICODE — n'échappe pas les caractères cyrilliques et autres caractères Unicode (au lieu de
\\u0438\\u0432\\u0430\\u043d, vous verrezИван). \n - JSON_UNESCAPED_SLASHES — n'échappe pas les barres obliques (utile pour les URL). \n
- JSON_NUMERIC_CHECK — convertit les chaînes contenant des nombres en type numérique. \n
<?php\n$data = [\n 'message' => 'Привет, мир!',\n 'url' => 'https://example.com/api/v1/users'\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);\necho $json;\n?>\n\nRésultat :
\n\n{\n "message": "Привет, мир!",\n "url": "https://example.com/api/v1/users"\n}\n\nRemarquez : le cyrillique s'affiche normalement, les barres obliques ne sont pas échappées. C'est exactement ainsi qu'il faut généralement afficher le JSON pour un humain.
\n\nMéthode 2 : Formatage d'une chaîne JSON existante
\n\nQue faire si vous avez déjà une chaîne JSON (par exemple, obtenue à partir d'un fichier ou d'une base de données) et qu'elle