Introdução ao trabalho com JSON em PHP
\n\nJSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado no desenvolvimento web para transmitir informações entre o cliente e o servidor. Apesar de sua origem no JavaScript, o JSON tornou-se um padrão universal, suportado por praticamente todas as linguagens de programação, incluindo PHP.
\n\nNo PHP, o trabalho com JSON é implementado nativamente, tornando o processamento deste formato simples e eficiente. Neste artigo, vamos detalhar como realizar parsing de JSON (conversão de string em estruturas de dados PHP) e serialização (conversão de dados PHP em string JSON). O material é voltado para desenvolvedores iniciantes, por isso vamos progredir do simples ao complexo.
\n\nAo final do artigo, você aprenderá a:
\n- \n
- Converter arrays e objetos PHP em JSON \n
- Fazer parsing de strings JSON em arrays associativos e objetos \n
- Tratar erros ao trabalhar com JSON \n
- Usar estruturas de dados aninhadas \n
Funções principais para trabalhar com JSON em PHP
\n\nO PHP fornece duas funções principais para trabalhar com JSON:
\n\njson_encode() — serialização de dados
\n\nA função json_encode() converte uma variável PHP (array, objeto, string, número) em uma string JSON. Isso é chamado de serialização.
Exemplo de uso básico:
\n\n<?php\n// Array associativo\n$user = [\n "name" => "João",\n "age" => 28,\n "email" => "joao@example.com",\n "is_active" => true\n];\n\n$json = json_encode($user);\necho $json;\n// Saída: {"name":"João","age":28,"email":"joao@example.com","is_active":true}\n?>\n\nA função converte automaticamente os tipos de dados PHP para os tipos JSON correspondentes:
\n- \n
- Strings → strings JSON \n
- Números → números JSON \n
- Valores booleanos → true/false \n
- Arrays → objetos ou arrays JSON (depende das chaves) \n
- NULL → null \n
json_decode() — parsing de JSON
\n\nA função json_decode() realiza a operação inversa — converte uma string JSON em uma variável PHP. Isso é chamado de parsing.
Exemplo:
\n\n<?php\n$jsonString = '{"name":"João","age":28,"email":"joao@example.com","is_active":true}';\n\n// Parsing em objeto (padrão)\n$userObject = json_decode($jsonString);\necho $userObject->name; // Saída: João\n\n// Parsing em array associativo (segundo parâmetro true)\n$userArray = json_decode($jsonString, true);\necho $userArray["name"]; // Saída: João\n?>\n\nObserve o segundo parâmetro da função json_decode():
- \n
false(padrão) — retorna objetos stdClass \n true— retorna arrays associativos \n
Recursos avançados e tratamento de erros
\n\nTrabalhando com estruturas aninhadas
\n\nO JSON suporta objetos e arrays aninhados. O PHP lida facilmente com essas estruturas:
\n\n<?php\n// Estrutura de dados complexa\n$data = [\n "company" => "TechCorp",\n "employees" => [\n ["name" => "Ana", "position" => "Developer"],\n ["name" => "Pedro", "position" => "Designer"],\n ["name" => "Maria", "position" => "Manager"]\n ],\n "address" => [\n "city" => "São Paulo",\n "street" => "Paulista",\n "building" => 10\n ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>\n\nO resultado será formatado para melhor legibilidade graças à flag JSON_PRETTY_PRINT.
Tratamento de erros no parsing
\n\nAo trabalhar com dados externos (API, arquivos), é importante verificar se o JSON é válido. Use a função json_last_error():
<?php\n$badJson = '{"name":