Cómo extraer datos de JSON en PHP

Minahil Noor 5 noviembre 2020
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

Artículo relacionado - PHP JSON