Processamento de JSON em PHP: guia completo
JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou padrão para a comunicação entre cliente e servidor. Em PHP, o trabalho com JSON é implementado nativamente através das funções embutidas json_encode() e json_decode(). Neste artigo, abordaremos detalhadamente todos os aspectos do processamento de JSON em PHP: desde operações básicas até técnicas avançadas e tratamento de erros.
Funções principais para trabalhar com JSON em PHP
O PHP fornece duas ferramentas-chave para processamento de JSON:
- json_encode() — converte um valor PHP (array, objeto, string) em uma string JSON.
- json_decode() — decodifica uma string JSON de volta para um valor PHP.
Exemplo de uso básico de json_encode()
<?php// Dados de origem: array associativo$data = [ 'name' => 'Иван', 'age' => 30, 'skills' => ['PHP', 'JavaScript', 'Python']];
// Codificando para JSON$jsonString = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Resultado da execução:
{ "name": "Иван", "age": 30, "skills": [ "PHP", "JavaScript", "Python" ]}A flag JSON_UNESCAPED_UNICODE preserva caracteres cirílicos sem escape, e JSON_PRETTY_PRINT formata a saída com indentação para legibilidade.
Exemplo de decodificação de JSON em PHP
<?php$jsonString = '{"name":"Анна","age":25,"city":"Москва"}';
// Decodificando para array associativo (segundo argumento true)$array = json_decode($jsonString, true);echo $array['name']; // Аннаecho $array['city']; // Москва
// Decodificando para objeto (padrão)$object = json_decode($jsonString);echo $object->name; // Анна?>Tratamento de erros ao trabalhar com JSON
Ao trabalhar com dados externos, é importante verificar a validade do JSON. Para isso, use json_last_error() e json_last_error_msg():
<?php$invalidJson = '{name: "Ошибка"}'; // JSON inválido (chave sem aspas)
$decoded = json_decode($invalidJson);
if (json_last_error() !== JSON_ERROR_NONE) { $errorMsg = json_last_error_msg(); echo "Erro de decodificação JSON: $errorMsg"; // Saída: Erro de decodificação JSON: Syntax error}?>Trabalhando com estruturas aninhadas
JSON é excelente para dados hierárquicos complexos. Veja um exemplo com arrays e objetos aninhados:
<?php$complexData = [ 'users' => [ [ 'id' => 1, 'name' => 'Петр', 'orders' => [ ['product' => 'Ноутбук', 'price' => 75000], ['product' => 'Мышь', 'price' => 1500] ] ], [ 'id' => 2, 'name' => 'Мария', 'orders' => [] ] ], 'total_orders' => 2];
$json = json_encode($complexData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);file_put_contents('data.json', $json); // Salvando em arquivo
// Lendo de volta$jsonFromFile = file_get_contents('data.json');$restoredData = json_decode($jsonFromFile, true);
// Acessando dados aninhadosecho $restoredData['users'][0]['orders'][0]['product']; // Ноутбук?>Opções avançadas de json_encode()
O PHP suporta diversas flags para ajuste fino da codificação:
JSON_FORCE_OBJECT— força a codificação de um array como objeto.JSON_NUMERIC_CHECK— converte strings numéricas em números.JSON_UNESCAPED_SLASHES— não escapa barras.JSON_THROW_ON_ERROR— lança uma exceção em caso de erro (
Também na biblioteca
Cliente OAuth para Rust: biblioteca oauth2-rs
Filas de Tarefas para TypeScript: Bull, Bee-Queue e Processamento Assíncrono
Trabalhando com datas em Rust: visão geral das bibliotecas de tempo e data
Cliente Elasticsearch para PHP: elasticsearch-php. Guia completo
Respect/Validation para PHP: guia completo com exemplos práticos