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 en PHP parece un batiburrillo?

\n\n

Imagine la situación: ha escrito un script en PHP que obtiene datos de una API o genera una respuesta para el frontend. Muestra el resultado usando echo json_encode($data) — y obtiene en el navegador o la consola algo como:

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

De acuerdo, leer esta cadena sin formato es como intentar descifrar la letra de un médico. Especialmente si hay muchos datos y la anidación es profunda. Aquí es donde viene al rescate el pretty-printing JSON en PHP.

\n\n

Este artículo es para aquellos que recién comienzan a trabajar con PHP y JSON. Analizaremos cómo hacer que la salida JSON sea bonita, legible y fácil de depurar. Aprenderá no solo los métodos básicos, sino también trucos útiles que le ahorrarán horas de frustración. ¡Empecemos!

\n\n

¿Qué es pretty-print y para qué sirve?

\n\n

Pretty-print (literalmente, «impresión bonita») es el formateo de datos con sangrías, saltos de línea y alineación. En el caso de JSON, esto significa que, en lugar de una larga cadena, obtendrá una salida estructurada donde cada clave y valor están en su lugar.

\n\n

Imagine que está depurando una solicitud de API o revisando un archivo de configuración. Sin pretty-print, perderá mucho tiempo tratando de entender dónde termina un objeto y comienza otro. Con el formateo, todo está claro como el agua.

\n\n

En PHP, hay varias formas de lograr una salida JSON bonita. Comenzaremos con la más simple y popular: usar la bandera JSON_PRETTY_PRINT.

\n\n

Método 1: JSON_PRETTY_PRINT — su mejor amigo

\n\n

La forma más sencilla de hacer pretty-print JSON en PHP es usar la constante JSON_PRETTY_PRINT al llamar a la función json_encode(). Esta constante está disponible desde PHP 5.4.0.

\n\n

Ejemplo básico

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

Resultado:

\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

Mucho mejor, ¿verdad? Cada elemento del array ahora está en una línea separada, las sangrías están colocadas, la estructura se lee intuitivamente.

\n\n

Combinando con otras banderas

\n\n

JSON_PRETTY_PRINT se puede y debe combinar con otras banderas para un ajuste más fino. Por ejemplo:

\n\n
    \n
  • JSON_UNESCAPED_UNICODE — no escapa caracteres cirílicos y otros caracteres Unicode (en lugar de \\u0438\\u0432\\u0430\\u043d verá Иван).
  • \n
  • JSON_UNESCAPED_SLASHES — no escapa las barras inclinadas (útil para URL).
  • \n
  • JSON_NUMERIC_CHECK — convierte cadenas que contienen números al tipo numérico.
  • \n
\n\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\n

Resultado:

\n\n
{\n    "message": "Привет, мир!",\n    "url": "https://example.com/api/v1/users"\n}
\n\n

Observe: el cirílico se muestra normalmente, las barras no están escapadas. Así es como normalmente se debe mostrar JSON para una persona.

\n\n

Método 2: Formateo de una cadena JSON existente

\n\n

¿Y qué hacer si ya tiene una cadena JSON (por ejemplo, obtenida de un archivo o de una base de datos) y e

Blogs

Book Recommendations