Cómo extraer datos de JSON en PHP
En este artículo, introduciremos métodos para extraer datos de JSON en PHP.
- Usando la función
json_decode()
Use la función json_decode()
para extraer datos de JSON en PHP
Usaremos la función incorporada json_decode()
para extraer datos de JSON. Convertiremos la string
de JSON en un objeto o en un array
para extraer los datos. La sintaxis correcta para usar esta función es la siguiente.
json_decode($jsonString, $assoc, $depth, $options);
La función incorporada json_decode()
tiene cuatro parámetros. Los detalles de sus parámetros son los siguientes
Parámetros | Descripción | |
---|---|---|
$jsonString |
obligatorio | Es la string codificada por JSON de la que queremos extraer los datos. |
$assoc |
opcional | Es una variable “booleana”. Si es VERDADERA, la función devolverá un array asociativa. Si es FALSO, la función devolverá el objeto. |
$depth |
opcional | Es un número entero. Dice sobre la profundidad especificada. |
$options |
opcional | Habla de la 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 . Puedes comprobar sus detalles aquí. |
Esta función devuelve NULL si la cadena
de JSON no está en un formato adecuado. Devuelve un array
asociativo u objeto dependiendo del parámetro $assoc
.
El programa de abajo muestra cómo podemos usar la función json_decode()
para extraer datos de una string
de 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);
?>
La función devolverá un objeto porque no hemos pasado el 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"
}
}
Si pasamos el parámetro $assoc
, la función devolverá un array asociativo.
<?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"
}
}
Si la función ha devuelto un objeto, podemos acceder a los datos de la siguiente manera:
<?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;
?>
La función devolverá el primer nombre de los datos extraídos.
Resultado:
The first name is:
Olivia
Si la función ha devuelto un array
, podemos acceder directamente a los datos de la siguiente manera:
<?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'];
?>
La función devolverá el primer nombre de los datos extraídos.
Resultado:
The first name is:
Olivia
También podemos iterar a través de nuestra 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";
}
?>
La función devolverá los datos extraídos.
Resultado:
firstName : Olivia
lastName : Mason
dateOfBirth : 19-09-1999