Trabalho com JSON em PHP: parsing e serialização na prática
JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou padrão para APIs web e arquivos de configuração. Em PHP, o trabalho com JSON é implementado nativamente e não requer a instalação de extensões adicionais. Neste artigo, vamos explorar como realizar parsing e serialização de JSON em PHP com exemplos reais, além de aprender a tratar erros e trabalhar com estruturas aninhadas.
O que é serialização e parsing de JSON?
Antes de ir para o código, vamos definir os conceitos-chave:
- Serialização — conversão de uma variável PHP (array, objeto) em uma string JSON.
- Parsing (desserialização) — processo inverso: conversão de uma string JSON em uma variável PHP.
O PHP fornece duas funções principais para essas tarefas: json_encode() e json_decode(). Vamos analisá-las em detalhes.
Serialização de dados em JSON com json_encode()
A função json_encode() recebe um valor PHP (exceto recursos) e retorna sua representação JSON. Veja um exemplo básico:
<?php$user = [ 'name' => 'Ivan Petrov', 'age' => 28, 'email' => 'ivan@example.com', 'is_active' => true];
$json = json_encode($user);echo $json;// Saída: {"name":"Ivan Petrov","age":28,"email":"ivan@example.com","is_active":true}?>Por padrão, json_encode() converte arrays associativos em objetos JSON. Se precisar de um array, use a flag JSON_FORCE_OBJECT:
<?php$numbers = [10, 20, 30];echo json_encode($numbers); // [10,20,30]echo json_encode($numbers, JSON_FORCE_OBJECT); // {"0":10,"1":20,"2":30}?>Flags úteis do json_encode()
JSON_PRETTY_PRINT— formata a saída com indentação para legibilidade.JSON_UNESCAPED_UNICODE— não escapa caracteres Unicode (letras acentuadas).JSON_NUMERIC_CHECK— converte strings que contêm números para o tipo numérico.
<?php$data = ['product' => 'Livro', 'price' => '1500'];
// Saída bonita com caracteres acentuadosecho json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);/*{ "product": "Livro", "price": "1500"}*/
// Conversão automática da string '1500' para númeroecho json_encode($data, JSON_NUMERIC_CHECK);// {"product":"Livro","price":1500}?>Parsing de JSON em PHP com json_decode()
A função json_decode() recebe uma string JSON e a converte em uma variável PHP. O segundo parâmetro $associative determina se deve retornar um array associativo (true) ou um objeto (false, padrão).
<?php$jsonString = '{"name":"Maria","age":25,"hobbies":["leitura","viagens"]}';
// Parsing para objeto$obj = json_decode($jsonString);echo $obj->name; // Mariaecho $obj->hobbies[0]; // leitura
// Parsing para array associativo$arr = json_decode($jsonString, true);echo $arr['age']; // 25?>Trabalhando com estruturas aninhadas
O JSON frequentemente contém objetos e arrays aninhados. Veja um exemplo com uma API de clima:
<?php$weatherJson = '{ "city": "Moscou", "temperature": { "current": -5, "feels_like": -8 }, "forecast": [ {"day": "Seg", "temp": -3}, {"day": "Ter", "temp": -1} ]}';
$weather = json_decode($weatherJson, true);
echo "Temperatura atual: " . $weather['temperature']['current'] . "°C";echo "Sensação térmica: " . $weather['temperature']['feels_like'] . "°C";
foreach ($weather['forecast'] as $day) { echo "{$day['day']}: {$day['temp']}°C";}?>Blogs
Book Recommendations
Leia também
Trabalho com bancos de dados em JavaScript: PostgreSQL e MongoDB no Node.js
Refatoração de código legado em C++: estratégias e exemplos
Tratamento de Erros em PHP: try/catch e Técnicas Avançadas