Trabalhando com JSON em PHP: parsing e serialização de dados

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

Trabalhando com JSON em PHP: Um Guia Completo para Parsing e Serialização



JSON (JavaScript Object Notation) é um formato leve de intercâmbio de dados amplamente utilizado no desenvolvimento web. O PHP fornece funções internas poderosas para trabalhar com JSON, permitindo conversão fácil entre estruturas PHP e strings JSON. Neste artigo, examinaremos detalhadamente como realizar parsing (decodificação) e serialização (codificação) de JSON em PHP, além de analisar erros típicos e formas de tratá-los.



O que é JSON e por que ele é necessário em PHP?



JSON é um formato de texto baseado na sintaxe JavaScript. Ele é usado para transferir dados estruturados entre um servidor e um cliente (por exemplo, em APIs REST). Em PHP, o JSON é indispensável quando:



  • Trocando dados com APIs externas (ex.: serviços meteorológicos, sistemas de pagamento)
  • Armazenando arquivos de configuração
  • Serializando dados para cache
  • Trabalhando com web sockets e requisições AJAX


O PHP oferece suporte para trabalhar com JSON desde a versão 5.2.0. Todas as funções necessárias estão embutidas no núcleo — nenhuma extensão adicional é necessária.



Serialização de Dados para JSON (json_encode)



A função json_encode() converte valores PHP (arrays, objetos, strings, números) em uma string JSON. Vejamos um exemplo básico:



<?php// Array associativo$user = [    'name' => 'Ivan Petrov',    'age' => 28,    'email' => 'ivan@example.com',    'is_active' => true,    'hobbies' => ['programming', 'chess', 'running']];

// Codificar para JSON$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>


Resultado:



{    "name": "Ivan Petrov",    "age": 28,    "email": "ivan@example.com",    "is_active": true,    "hobbies": [        "programming",        "chess",        "running"    ]}


Flags importantes do json_encode



  • JSON_UNESCAPED_UNICODE — preserva caracteres cirílicos (sem essa flag, caracteres russos serão escapados como \\uXXXX)
  • JSON_PRETTY_PRINT — formata a saída com indentação para legibilidade
  • JSON_NUMERIC_CHECK — converte strings numéricas em números
  • JSON_FORCE_OBJECT — força a criação de um objeto, mesmo que um array vazio seja passado


Parsing de JSON em PHP (json_decode)



A função json_decode() realiza a transformação inversa — de uma string JSON para um valor PHP. Por padrão, ela retorna um objeto. Para obter um array associativo, passe o segundo parâmetro true:



<?php$jsonString = '{"name":"Ivan Petrov","age":28,"email":"ivan@example.com","is_active":true}';

// Decodificar para objeto$userObject = json_decode($jsonString);echo $userObject->name; // Ivan Petrov

// Decodificar para array associativo$userArray = json_decode($jsonString, true);echo $userArray['name']; // Ivan Petrov?>


Profundidade de aninhamento



O terceiro parâmetro de json_decode() — depth — limita a profundidade da recursão. Por padrão, é 512. Isso protege contra ataques como o "billion laughs attack":



<?php$deepJson = '{"a":{"b":{"c":{"d":"test"}}}}';$data = json_decode($deepJson, true, 3); // Erro se profundidade for maior que 3?>


Tratamento de erros ao trabalhar com JSON



Ao fazer parsing de JSON inválido, json_decode() retorna null. Para obter informações detalhadas sobre o erro, use json_last_error() e json_last_error_msg():



<?php$badJson = '{"name": "Ivan", age: 28}'; // Erro: chave age não está entre aspas

$data = json_decode($badJson, true);

if (json_last_error() !== JSON_ERROR_NONE) {

Blogs

Book Recommendations