Processamento de JSON em PHP: funções, exemplos e melhores práticas

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

Processamento JSON em PHP: guia completo



JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou o padrão de facto para interação entre servidor e cliente. Em PHP, o trabalho com JSON é implementado nativamente através da extensão json, disponível desde o PHP 5.2.0. Neste artigo, abordaremos detalhadamente as funções principais, tratamento de erros, trabalho com estruturas aninhadas e melhores práticas.



Funções principais para trabalhar com JSON



O PHP fornece duas funções-chave:



  • json_encode() — converte um valor PHP (array, objeto, string, etc.) em uma string JSON.
  • json_decode() — converte uma string JSON de volta para uma variável PHP (array ou objeto).


Exemplo: codificando um array em JSON



<?php$data = [    'name' => 'Alice',    'age' => 30,    'is_student' => false,    'skills' => ['PHP', 'JavaScript', 'Python']];

$json = json_encode($data, JSON_PRETTY_PRINT);echo $json;?>


Resultado da execução:



{    "name": "Alice",    "age": 30,    "is_student": false,    "skills": [        "PHP",        "JavaScript",        "Python"    ]}


Exemplo: decodificando JSON em array



<?php$jsonString = '{"name":"Bob","age":25,"is_active":true}';

// Segundo parâmetro true — retorna um array associativo$array = json_decode($jsonString, true);print_r($array);?>


Resultado:



Array(    [name] => Bob    [age] => 25    [is_active] => 1)


Flags para ajuste fino



As funções json_encode() e json_decode() suportam um segundo parâmetro — uma máscara de bits de flags. Vamos considerar as mais úteis:



  • JSON_PRETTY_PRINT — formata a saída com indentação (para legibilidade).
  • JSON_UNESCAPED_UNICODE — não escapa caracteres Unicode (útil para cirílico).
  • JSON_FORCE_OBJECT — força a conversão de um array associativo em objeto.
  • JSON_NUMERIC_CHECK — converte strings que contêm números para o tipo numérico.


Exemplo com cirílico e formatação



<?php$data = [    'name' => 'Алексей',    'city' => 'Москва'];

echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>


Resultado:



{    "name": "Алексей",    "city": "Москва"}


Tratamento de erros ao trabalhar com JSON



Se a string de entrada não for um JSON válido, json_decode() retornará null. Para descobrir a causa exata do erro, use as funções json_last_error() e json_last_error_msg().



<?php$invalidJson = '{name: "Alice"}'; // JSON inválido (chaves sem aspas)

$result = json_decode($invalidJson);if (json_last_error() !== JSON_ERROR_NONE) { echo 'Erro: ' . json_last_error_msg();} else { print_r($result);}?>


Saída:



Erro: Syntax error


Lista completa de constantes de erro:



  • JSON_ERROR_NONE — sem erros.
  • JSON_ERROR_DEPTH — profundidade máxima da pilha excedida.
  • JSON_ERROR_STATE_MISMATCH — JSON inválido (incompatibilidade de colchetes).
  • JSON_ERROR_SYNTAX — erro de sintaxe.
  • JSON_ERROR_UTF8 — codificação UTF-8 inválida.


Trabalhando com estruturas aninhadas



JSON frequentemente contém objetos e arrays aninhados. O PHP permite processar esses dados facilmente usando recursão ou loops.



<?php$complexJson = '{    "users": [        {"name": "Alice"                    

Recommendations