JSON com PHP

Capa Curso PHP
Tempo de leitura: 4 minutos

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âmetroValorTipo de Saída PHP
Omitido (padrão)falseObjeto PHP padrão (stdClass).
associativotrueArray 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çãoPropó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:

SQL
SQL
Capa Curso PHP
PHP
Laravel
Laravel

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:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.