Cómo mostrar JSON de forma bonita en PHP: guía completa para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: por qué el JSON "sucio" es enemigo de cualquier desarrollador

\n\n

Imagine: está escribiendo una API en PHP, devuelve datos en formato JSON, abre el resultado en el navegador o la consola — y ve una sola línea continua sin un solo espacio:

\n\n
{"users":[{"id":1,"name":"Иван","email":"ivan@example.com"},{"id":2,"name":"Мария","email":"maria@example.com"}]}
\n\n

Los ojos se pierden, es imposible encontrar el campo necesario, y si el JSON contiene un error — lo buscará durante horas. ¿Le suena familiar? Por eso en Stack Overflow la pregunta "Pretty-Printing JSON with PHP" ha acumulado miles de visitas. Hoy vamos a entender de una vez por todas cómo hacer que el JSON sea legible, estructurado y bonito con PHP.

\n\n

En este artículo aprenderá:

\n
    \n
  • Qué es pretty-printing y para qué sirve
  • \n
  • Cómo usar la función incorporada json_encode con banderas
  • \n
  • Cómo formatear JSON para depuración, registros y salida en el navegador
  • \n
  • Técnicas adicionales: formateo recursivo, trabajo con Unicode y compresión
  • \n
\n\n

¡Allá vamos!

\n\n

¿Qué es pretty-printing JSON?

\n\n

Pretty-printing (del inglés "impresión bonita") es el formateo de datos con sangrías, saltos de línea y alineación, para que una persona pueda leer fácilmente la estructura. En el caso de JSON, esto convierte un "batiburrillo" en una jerarquía ordenada:

\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\n

¡Reconozca que es mucho más agradable trabajar así! PHP proporciona herramientas incorporadas para esto, que no requieren instalar bibliotecas adicionales.

\n\n

Método principal: json_encode con la bandera JSON_PRETTY_PRINT

\n\n

El método más simple y común es usar el segundo parámetro de la función json_encode(), pasando la constante JSON_PRETTY_PRINT. Aquí tiene un ejemplo básico:

\n\n
<?php\n$data = [\n    'name' => 'PythonLib',\n    'type' => 'educational',\n    'topics' => ['PHP', 'Python', 'JavaScript'],\n    'stats' => [\n        'visitors' => 15000,\n        'rating' => 4.8\n    ]\n];\n\n$prettyJson = json_encode($data, JSON_PRETTY_PRINT);\necho $prettyJson;\n?>
\n\n

Resultado:

\n\n
{\n    "name": "PythonLib",\n    "type": "educational",\n    "topics": [\n        "PHP",\n        "Python",\n        "JavaScript"\n    ],\n    "stats": {\n        "visitors": 15000,\n        "rating": 4.8\n    }\n}
\n\n

Tenga en cuenta: las claves se ordenan alfabéticamente. Si necesita conservar el orden original, use la bandera JSON_PRESERVE_ZERO_FRACTION (para números de punto flotante) u ordene el array manualmente.

\n\n

Combinación de banderas

\n\n

Puede pasar varias banderas usando | (OR bit a bit). Por ejemplo, para formatear y escapar caracteres Unicode simultáneamente:

\n\n
$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);\necho $json;
\n\n

La bandera JSON_UNESCAPED_UNICODE conserva los caracteres cirílicos y otros en forma legible, en lugar de como \\u0438\\u0432\\u0430\\u043d. Esto es especialmente útil para sitios en español y otros idiomas.

\n\n

Cómo mostrar pretty-printed JSON en el navegador

\n\n

Si está desarrollando una API y desea que el JSON se muestre bonito directamente en el navegador (por ejemplo, durante la depuración), use la cabecera Content-Type: application/json junto con el formateo:

\n\n
<?php\nheader('Content-Type: application/json; charset=utf-8');\n\n$response = [\n    'status' => 'success',\n    'data' => [\n        'message' => '¡Hola, mundo!',\n        'code' => 200\n    ]\n];\n\necho                

Blogs

Book Recommendations