Como exibir JSON formatado em PHP: guia completo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que o JSON no PHP parece uma bagunça?

\n\n

Imagine a seguinte situação: você escreveu um script em PHP que recebe dados de uma API ou gera uma resposta para o frontend. Você exibe o resultado com echo json_encode($data) — e obtém no navegador ou console algo como:

\n\n
{"users":[{"id":1,"name":"João","email":"joao@example.com"},{"id":2,"name":"Maria","email":"maria@example.com"}]}
\n\n

Concorda que ler essa linha sem formatação é como tentar decifrar a letra de um médico? Principalmente quando há muitos dados e aninhamento profundo. É exatamente aqui que o pretty-print JSON em PHP entra em cena.

\n\n

Este artigo é para quem está começando a trabalhar com PHP e JSON. Vamos explorar como tornar a saída JSON bonita, legível e fácil de depurar. Você aprenderá não apenas os métodos básicos, mas também truques úteis que economizarão horas de frustração. Vamos nessa!

\n\n

O que é pretty-print e por que você precisa dele?

\n\n

Pretty-print (literalmente, "impressão bonita") é a formatação de dados com indentação, quebras de linha e alinhamento. No caso do JSON, isso significa que, em vez de uma única linha longa, você obtém uma saída estruturada onde cada chave e valor estão em seus devidos lugares.

\n\n

Imagine que você está depurando uma requisição de API ou verificando um arquivo de configuração. Sem o pretty-print, você perderá um tempo enorme tentando entender onde um objeto termina e outro começa. Com a formatação, tudo fica claro como água.

\n\n

No PHP, existem várias maneiras de obter uma saída JSON bonita. Vamos começar com a mais simples e popular: o uso da flag JSON_PRETTY_PRINT.

\n\n

Método 1: JSON_PRETTY_PRINT — seu melhor amigo

\n\n

A maneira mais simples de fazer pretty-print JSON em PHP é usar a constante JSON_PRETTY_PRINT ao chamar a função json_encode(). Essa constante está disponível desde o PHP 5.4.0.

\n\n

Exemplo básico

\n\n
<?php\n$data = [\n    'users' => [\n        ['id' => 1, 'name' => 'João', 'email' => 'joao@example.com'],\n        ['id' => 2, 'name' => 'Maria', '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": "João",\n            "email": "joao@example.com"\n        },\n        {\n            "id": 2,\n            "name": "Maria",\n            "email": "maria@example.com"\n        }\n    ]\n}
\n\n

Bem melhor, não é? Cada elemento do array agora está em uma linha separada, a indentação está correta e a estrutura é intuitiva de ler.

\n\n

Combinando com outras flags

\n\n

JSON_PRETTY_PRINT pode e deve ser combinado com outras flags para um ajuste mais fino. Por exemplo:

\n\n
    \n
  • JSON_UNESCAPED_UNICODE — não escapa caracteres acentuados ou Unicode (em vez de \\u00e1, você verá á).
  • \n
  • JSON_UNESCAPED_SLASHES — não escapa barras (útil para URLs).
  • \n
  • JSON_NUMERIC_CHECK — converte strings que contêm números para o tipo numérico.
  • \n
\n\n
<?php\n$data = [\n    'message' => 'Olá, mundo!',\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": "Olá, mundo!",\n    "url": "https://example.com/api/v1/users"\n}
\n\n

Observe: os caracteres acentuados são exibidos normalmente e as barras não foram escapadas. Essa é geralmente a melhor forma de exibir JSON para humanos.

\n\n

Método 2: Formatando uma string JSON já existente

\n\n

E se você já tiver uma string JSON (por exemplo, obtida de um arquivo ou banco de dados) e qui

Blogs

Book Recommendations