JSON com PHP: JSON (JavaScript Object Notation) é o formato de intercâmbio de dados mais popular na web, devido à sua leveza e fácil leitura (tanto por humanos quanto por máquinas). A capacidade do PHP de converter dados estruturados (arrays e objetos) para JSON e vice-versa é fundamental para criar APIs RESTful e interagir com serviços externos.
1. ➡️ Codificação: PHP para JSON (json_encode)
A função json_encode() é responsável por converter estruturas de dados PHP (arrays ou objetos) em uma string no formato JSON.
A. Conversão de Arrays PHP
Um array associativo em PHP é convertido em um objeto JSON, e um array indexado (sem chaves sequenciais) é convertido em um array JSON.
PHP
<?php
$dados = [
'nome' => 'João',
'idade' => 30,
'cidade' => 'São Paulo'
];
$json_string = json_encode($dados);
// Saída JSON (Objeto): {"nome":"João","idade":30,"cidade":"São Paulo"}
echo $json_string;
?>
B. Conversão de Objetos PHP
Ao codificar um objeto PHP, apenas as propriedades públicas são incluídas no objeto JSON resultante.
PHP
<?php
class Pessoa {
public $nome;
private $cpf; // Propriedades privadas não são incluídas por padrão
public function __construct($nome, $cpf) {
$this->nome = $nome;
$this->cpf = $cpf;
}
}
$pessoa = new Pessoa('Ana', '123.456.789-00');
$json = json_encode($pessoa);
// Saída JSON (Objeto): {"nome":"Ana"}
echo $json;
?>
2. ⬅️ Decodificação: JSON para PHP (json_decode)
A função json_decode() analisa uma string JSON e a converte em estruturas de dados PHP. O segundo parâmetro desta função é crucial:
| Parâmetro | Valor | Tipo de Saída PHP |
| Omitido (padrão) | false | Objeto PHP padrão (stdClass). |
associativo | true | Array Associativo PHP. |
Exemplo de Decodificação
PHP
<?php
$json_input = '{"nome":"Maria","idade":25}';
// Opção 1: Decodificar para Objeto PHP (acesso via ->)
$dados_obj = json_decode($json_input);
echo $dados_obj->nome; // Saída: Maria
// Opção 2: Decodificar para Array Associativo (acesso via [])
$dados_arr = json_decode($json_input, true);
echo $dados_arr['idade']; // Saída: 25
?>
3. ⚠️ Tratamento de Erros e Boas Práticas
É fundamental verificar se a codificação ou decodificação foi bem-sucedida, especialmente ao receber dados de fontes externas (APIs ou inputs do usuário).
A. Verificação de Erro
Após chamar json_encode() ou json_decode(), use as funções abaixo:
| Função | Propósito |
json_last_error() | Retorna um código de erro (deve ser JSON_ERROR_NONE em caso de sucesso). |
json_last_error_msg() | Retorna a mensagem de erro correspondente. |
PHP
<?php
$json_invalido = '{nome:"João"}'; // JSON inválido: chaves de string devem ser aspas duplas
json_decode($json_invalido);
if (json_last_error() !== JSON_ERROR_NONE) {
echo 'Erro ao decodificar JSON: ' . json_last_error_msg();
}
?>
B. Criando uma API (Serviço Web RESTful)
Ao criar um serviço que deve retornar JSON, você precisa definir o Header HTTP correto para informar ao cliente o tipo de conteúdo.
PHP
<?php
// 1. Define o cabeçalho de resposta como JSON
header('Content-Type: application/json');
$usuarios = [
['id' => 1, 'nome' => 'João', 'status' => 'ativo'],
['id' => 2, 'nome' => 'Maria', 'status' => 'inativo']
];
// 2. Codifica e envia a resposta
echo json_encode($usuarios);
exit;
?>
C. Integração com APIs Externas
Para consumir dados de APIs externas, você deve usar cURL (ou uma biblioteca moderna como Guzzle) para fazer a requisição HTTP e, em seguida, decodificar a resposta JSON.
PHP
<?php
// ... (Código cURL para fazer a requisição GET, como visto no artigo anterior)
// Assume que $resposta é a string JSON recebida
$dados_api = json_decode($resposta, true);
if (json_last_error() === JSON_ERROR_NONE) {
// Processa os dados
foreach ($dados_api as $usuario) {
echo "ID: " . $usuario['id'] . ", Nome: " . $usuario['nome'] . "<br>";
}
} else {
echo "Falha ao analisar a resposta JSON da API.";
}
?>
✅ Conclusão JSON com PHP
JSON com PHP: O JSON é o formato de dados de facto para a web moderna. As funções nativas json_encode() e json_decode() do PHP fornecem todas as ferramentas necessárias para serializar e desserializar dados de forma eficiente. Ao dominar essas funções e utilizá-las com o tratamento de erros adequado, você estará apto a construir e consumir APIs RESTful robustas e a criar aplicações web dinâmicas e escaláveis.
Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:












