Processamento JSON em PHP: Guia Completo para Trabalhar com JSON

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

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 a comunicação entre cliente e servidor, bem como entre vários serviços web. Em PHP, o trabalho com JSON é implementado nativamente e não requer a instalação de extensões adicionais, tornando-o uma das linguagens mais convenientes para parsing e geração de dados JSON. Neste artigo, abordaremos detalhadamente todos os aspectos do processamento JSON em PHP: desde funções básicas até técnicas avançadas e tratamento de erros.



Funções principais do PHP para trabalhar com JSON



O PHP fornece duas funções-chave para trabalhar com JSON:



  • json_encode($value, $options = 0, $depth = 512) — converte um valor PHP (array, objeto, string, número) em uma string JSON.
  • json_decode($json, $associative = false, $depth = 512, $options = 0) — decodifica uma string JSON de volta para um valor PHP. Se o parâmetro $associative for definido como true, retorna um array associativo; caso contrário, retorna um objeto stdClass.


Vejamos um exemplo simples:



<?php// Criando um array associativo$data = [    "name" => "Ivan",    "age" => 30,    "city" => "Moscou",    "skills" => ["PHP", "JavaScript", "Python"]];

// Codificando para JSON$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $json;// Saída:// {// "name": "Ivan",// "age": 30,// "city": "Moscou",// "skills": ["PHP", "JavaScript", "Python"]// }

// Decodificando de volta para array$decoded = json_decode($json, true);echo $decoded['name']; // Ivan?>


Opções importantes do json_encode



A função json_encode suporta várias flags que alteram o comportamento da codificação. As mais úteis são:



  • JSON_UNESCAPED_UNICODE — não escapa caracteres Unicode (cirílico, emojis). Sem esta flag, letras russas serão convertidas para \\uXXXX.
  • JSON_PRETTY_PRINT — formata a saída com indentação e quebras de linha para legibilidade.
  • JSON_NUMERIC_CHECK — converte strings numéricas em números.
  • JSON_FORCE_OBJECT — força a criação de um objeto em vez de um array, mesmo que o array esteja vazio ou seja indexado.
  • JSON_PRESERVE_ZERO_FRACTION — preserva a parte fracionária para números inteiros (por exemplo, 10.0).


Exemplo de combinação de opções:



<?php$data = ['product' => 'Livro', 'price' => '1500.50', 'count' => 5];echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);// {"product":"Livro","price":1500.5,"count":5}?>


Tratamento de estruturas aninhadas e objetos complexos



O PHP permite trabalhar com estruturas JSON profundamente aninhadas. Vejamos um exemplo de parsing de uma resposta complexa de uma API:



<?php// Vamos supor que esta seja uma resposta de uma API externa$apiResponse = '{    "status": "success",    "data": {        "users": [            {"id": 1, "name": "Ana", "roles": ["admin", "editor"]},            {"id": 2, "name": "Pedro", "roles": ["user"]}        ],        "pagination": {            "page": 1,            "totalPages": 3        }    }}';

$parsed = json_decode($apiResponse, true);

// Obtendo os nomes de todos os usuários$names = array_column($parsed['data']['users'], 'name');print_r($names); // Array ( [0] => Ana [1] => Pedro )

// Verificando se um usuário tem o papel de adminforeach ($parsed['data']['users'] as $user) { if (in_array('admin', $user['roles'])) { echo "{$user['name']} tem privilégios de administrador"; }}?>


Tratamento de erros JSON



Um dos problemas mais comuns é o JSON inválido. O PHP fornece funções para diagnosticar erros:



  • json_last_error() — retorna

Recommendations