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