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 errorLista 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" Também na biblioteca
Cache em Java: Redis, Caffeine e outras ferramentas
SDK OpenAI para JavaScript (Node.js): guia completo com exemplos
Processamento de JSON em Kotlin: bibliotecas, parsing e serialização
Processamento e edição de imagens em TypeScript: Jimp, Sharp, Canvas
ORM para Go (Golang): comparação e exemplos de bibliotecas populares