Resumo : neste tutorial, você aprenderá como converter dados em PHP em dados JSON e vice-versa usando a extensão PHP JSON.
JSON significa notação de objeto JavaScript. JSON foi projetado como um formato leve de intercâmbio de dados.
JSON é construído em duas estruturas:
- Uma coleção de pares nome/valor chamados objetos JSON. Objetos JSON são equivalentes a arrays associativos em PHP.
- Uma lista ordenada de valores chamados arrays. Eles são equivalentes a arrays indexados em PHP.
O formato JSON é legível por humanos e fácil de analisar pelos computadores. Embora a sintaxe JSON derive de JavaScript , ela foi projetada para ser independente de linguagem.
Extensão PHP JSON
PHP oferece suporte nativo a JSON por meio da extensão JSON. A extensão JSON fornece algumas funções úteis que convertem dados do formato PHP para JSON e vice-versa.
Como a extensão JSON vem com instalação do PHP por padrão, você não precisa fazer nenhuma configuração extra para que funcione.
Convertendo variáveis PHP para JSON usando a função json_encode()
Para obter uma representação JSON de uma variável, você usa a json_encode()
função:
json_encode ( mixed $value , int $flags = 0 , int $depth = 512 ) : string|false
Linguagem de código: PHP ( php )
O exemplo a seguir usa a json_encode()
função para converter um array indexado em PHP para o formato JSON:
<?php
$names = ['Alice', 'Bob', 'John'];
$json_data = json_encode($names);
// return JSON to the browsers
header('Content-type:application/json');
echo $json_data;
Linguagem de código: PHP ( php )
Como funciona.
- Primeiro, defina uma matriz de strings que consiste em três elementos.
- Segundo, converta o array em JSON usando a
json_encode()
função. - Terceiro, retorne os dados JSON aos navegadores definindo o tipo de conteúdo do documento para
appplication/json
usar aheader()
função.
Saída:
[
"Alice",
"Bob",
"John"
]
Linguagem de código: JSON/JSON com comentários ( json )
O exemplo a seguir usa a json_encode()
função para converter um array associativo em PHP em um objeto em JSON:
<?php
$person = [
'name' => 'Alice',
'age' => 20
];
header('Content-type:application/json');
echo json_encode($person);
Linguagem de código: PHP ( php )
Saída:
{
name: "Alice",
age: 20
}
Linguagem de código: PHP ( php )
Na prática, você selecionaria dados de um banco de dados e usaria a json_encode()
função para convertê-los em dados JSON.
Convertendo dados JSON em variáveis PHP
Para converter dados JSON em uma variável em PHP, você usa a json_decode()
função:
json_decode ( string $json , bool|null $associative = null , int $depth = 512 , int $flags = 0 ) : mixed
Linguagem de código: PHP ( php )
O exemplo a seguir mostra como usar json_decode()
a função para converter dados JSON em uma variável em PHP:
<?php
$json_data = '{"name":"Alice","age":20}';
$person = json_decode($json_data);
var_dump($person);
Linguagem de código: PHP ( php )
Saída:
object(stdClass)#1 (2) {
["name"] => string(5) "Alice"
["age"] => int(20)
}
Linguagem de código: PHP ( php )
Neste exemplo, a json_decode()
função converte um objeto em JSON em um objeto em PHP. O objeto é uma instância da stdClass
classe. Para converter dados JSON em um objeto de uma classe específica, você precisa mapear manualmente os pares chave/valor JSON para propriedades do objeto. Ou você pode usar um pacote de terceiros.
Serializando objetos PHP
Para serializar um objeto em dados JSON, você precisa implementar a JsonSerializable
interface. A JsonSerializable
interface possui o jsonSerialize()
método que especifica a representação JSON do objeto.
Por exemplo, o seguinte mostra como implementar a JsonSerializable
interface e usar a json_encode()
função para serializar o objeto:
<?php
class Person implements JsonSerializable
{
private $name;
private $age;
public function __construct(string $name, int $age)
{
$this->name = $name;
$this->age = $age;
}
public function jsonSerialize()
{
return [
'name' => $this->name,
'age' => $this->age
];
}
}
// serialize object to json
$alice = new Person('Alice', 20);
echo json_encode($alice);
Linguagem de código: PHP ( php )
Saída:
{"name":"Alice","age":20}
Linguagem de código: PHP ( php )
Como funciona.
- Primeiro, defina uma classe Person que implemente a interface JsonSerializable.
- Segundo, retorne um array que consiste nas propriedades name e age do
jsonSerialize()
método. Ajson_encode()
função usará o valor de retorno deste método para criar dados JSON. - Terceiro, crie um novo
Person
objeto e serialize-o em dados JSON usando ajson_encode()
função.
Resumo
- JSON é um formato leve de intercâmbio de dados.
- Use a
json_encode()
função para converter variáveis PHP em JSON. - Use a
json_decode()
função para converter dados JSON em variáveis PHP. - Implemente a
JsonSerializable
interface para especificar a representação JSON de um objeto.