Introdução ao JSON e PHP
JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou o padrão de facto para comunicação entre servidores web e clientes. No desenvolvimento web moderno com PHP, você encontrará JSON em toda parte: desde requisições de API até arquivos de configuração e armazenamento de dados estruturados.
Neste artigo, abordaremos dois processos fundamentais de trabalho com JSON em PHP:
- Serialização — conversão de um array ou objeto PHP em uma string JSON (função
json_encode()). - Parsing (desserialização) — conversão inversa de uma string JSON em uma variável PHP (função
json_decode()).
O material é voltado para desenvolvedores PHP iniciantes, então iremos do simples ao complexo, com exemplos de código detalhados.
Serialização de dados: função json_encode()
Serialização é o processo de converter dados da representação interna do PHP (arrays, objetos) em uma string no formato JSON. Isso é necessário quando você deseja enviar dados para o cliente (navegador, aplicativo móvel) ou salvá-los em um arquivo/banco de dados em um formato universal.
Conversão de array para JSON
O caso mais simples é a serialização de um array associativo:
<?php$user = [ "name" => "Иван Петров", "age" => 28, "email" => "ivan@example.com", "is_active" => true];
$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Resultado da execução:
{ "name": "Иван Петров", "age": 28, "email": "ivan@example.com", "is_active": true}Observe as flags:
JSON_UNESCAPED_UNICODE— permite preservar caracteres cirílicos (sem esta flag, caracteres russos serão convertidos para \\uXXXX).JSON_PRETTY_PRINT— formata a saída com indentação para legibilidade (útil para depuração, mas aumenta o tamanho da string).
Conversão de objeto para JSON
Objetos PHP também podem ser serializados. Apenas propriedades públicas serão incluídas:
<?phpclass Product { public $id; public $title; private $secretPrice; // não será incluído no JSON
public function __construct($id, $title, $price) { $this->id = $id; $this->title = $title; $this->secretPrice = $price; }}
$product = new Product(1, "Ноутбук", 75000);echo json_encode($product, JSON_UNESCAPED_UNICODE);// Saída: {"id":1,"title":"Ноутбук"}?>Trabalho com estruturas aninhadas
JSON suporta aninhamento. Arrays PHP de qualquer profundidade são convertidos corretamente:
<?php$data = [ "company" => "TechCorp", "employees" => [ ["name" => "Анна", "position" => "Разработчик"], ["name" => "Борис", "position" => "Дизайнер"] ], "address" => [ "city" => "Москва", "street" => "Тверская" ]];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>Parsing JSON: função json_decode()
Parsing (desserialização) é o processo inverso: a partir de uma string JSON, obtemos dados com os quais o PHP pode trabalhar.
Obtendo um objeto
Por padrão, json_decode() retorna um objeto da classe stdClass:
<?php$jsonString = '{"name":"Иван Петров","age":28,"email":"ivan@example.com"}';$user = json_decode($jsonString);
echo $user->name; // Иван Петровecho $user->age; // 28echo $user->email; // ivan@example.com?>Obtendo um array
Se você passar o segundo argumento true, a função retornará um array associativo:
&l