Como extrair dados do JSON em PHP

Minahil Noor 6 fevereiro 2021
Como extrair dados do JSON em PHP

Neste artigo, vamos introduzir métodos para extrair dados do JSON em PHP.

  • Utilizando a função json_decode()

Utilize json_decode() Função para extrair dados do JSON em PHP

Utilizaremos a função embutida json_decode() para extrair dados do JSON. Converteremos a string JSON para um objeto ou um array para extrair os dados. A sintaxe correta para utilizar esta função é a seguinte.

json_decode($jsonString, $assoc, $depth, $options);

A função embutida json_decode() tem quatro parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$jsonString obrigatório É a string codificada JSON da qual queremos extrair os dados.
$assoc opcional É uma variável Boolean. Se ela for VERDADEIRA, a função retornará uma array associativa. Se for FALSA, a função retornará o objeto.
$depth opcional É um número inteiro. Ele especifica a profundidade especificada.
$options opcional Especifica a máscara de bits de JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR. Você pode verificar seus detalhes aqui.

Esta função retorna NULL se a string JSON não estiver em um formato adequado. Ela retorna um array associativo ou objeto, dependendo do parâmetro $assoc.

O programa abaixo mostra como podemos utilizar a função json_decode() para extrair dados de uma string JSON.

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString);
echo("The data is: \n");
var_dump($data);
?> 
    

A função retornará um objeto porque não passamos o parâmetro $assoc.

Resultado:

The data is: 
object(stdClass)#1 (3) {
  ["firstName"]=>
  string(6) "Olivia"
  ["lastName"]=>
  string(5) "Mason"
  ["dateOfBirth"]=>
  object(stdClass)#2 (3) {
    ["year"]=>
    string(4) "1999"
    ["month"]=>
    string(2) "06"
    ["day"]=>
    string(2) "19"
  }
}

Se passarmos o parâmetro $assoc, a função retornará um array associativo.

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString, true);
echo("The data is: \n");
var_dump($data);
?> 

Resultado:

The data is: 
array(3) {
  ["firstName"]=>
  string(6) "Olivia"
  ["lastName"]=>
  string(5) "Mason"
  ["dateOfBirth"]=>
  array(3) {
    ["year"]=>
    string(4) "1999"
    ["month"]=>
    string(2) "06"
    ["day"]=>
    string(2) "19"
  }
}

Se a função retornou um objeto, podemos acessar os dados da seguinte forma:

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString);
echo("The first name is: \n");
echo $data->firstName;
?> 

A função retornará o primeiro nome a partir dos dados extraídos.

Resultado:

The first name is: 
Olivia

Se a função retornou um array, podemos acessar diretamente os dados da seguinte forma:

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString, true);
echo("The first name is: \n");
echo $data['firstName'];
?> 

A função retornará o primeiro nome a partir dos dados extraídos.

Resultado:

The first name is: 
Olivia

Também podemos iterar através de nossa array.

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth": "19-09-1999"
}';
$data = json_decode($jsonString, true);
foreach ($data as $key=> $data1) {
    echo $key, " : ";
    echo $data1, "\n";
}
?> 

A função retornará os dados extraídos.

Resultado:

firstName : Olivia
lastName : Mason
dateOfBirth : 19-09-1999

Artigo relacionado - PHP JSON