Trabalho com JSON em PHP: parsing e serialização na prática

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

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