PHP JSON

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|falseLinguagem 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/jsonusar a header()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 ) : mixedLinguagem 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 stdClassclasse. 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 JsonSerializableinterface. A JsonSerializableinterface possui o jsonSerialize()método que especifica a representação JSON do objeto.

Por exemplo, o seguinte mostra como implementar a JsonSerializableinterface 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. A json_encode()função usará o valor de retorno deste método para criar dados JSON.
  • Terceiro, crie um novo Personobjeto e serialize-o em dados JSON usando a json_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 JsonSerializableinterface para especificar a representação JSON de um objeto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *