Como Leer Un Archivo JSON Con PHP

by Miguel on May 11, 2010

Analizar un archivo JSON o una cadena es tan fácil como análisis XML una vez que llegue la sintaxis, y, en este tutorial te mostraré cómo analizar y aprender su sintaxis. Pero antes de empezar vamos a establecer algunas convenciones de sintaxis para PHP matrices en caso de que no los conocen ya.

Echa un vistazo a la siguiente matriz PHP.

valor de $ nombreArray tecla [] =;

Las matrices en PHP tiene tres partes, el nombre o la variable utilizada, la clave (puede ser numérico o asociativo) y el valor de esa clave.

Cuando leemos / analizar una cadena JSON o archivo con PHP lo que vamos a estar haciendo es básicamente la asignación de un manojo de llaves a una variable y lo que la variable se convertirá en una matriz asociativa. En caso de que no han escuchado los términos asociativos o numérico, numérico, simplemente significa que usted está usando números como claves.

Ahora que tenemos un convenio echemos un vistazo a una cadena JSON simple.

$ cadena = '("name": "John Adams"); 

Usted puede pensar en esta cadena como una llave "nombre" que mantiene el valor "John Adams". Note los paréntesis, que se utilizan para arreglos separados de claves. Así que podemos dar la siguiente convención de nomenclatura de la presente cadena json

("Clave": "valor")
Para analizar JSON con PHP usaremos la funcion json_decode, esta función toma una cadena JSON para su primer parámetro y un booleano opcional (verdadero / falso) para su segundo parámetro. El segundo parámetro, si el valor true, devuelve la cadena json como una matriz asociativa, si no se establece que devolverá un objeto. La principal diferencia entre las dos opciones es la sintaxis que se utiliza para referirse a ellas, por ahora vamos a estar preparando el segundo parámetro en true para que devuelva la matriz asociativa más familiar, pero trataremos objetos.

Ahora que usted sabe sobre esta nueva función de este modo tu archivo php como el mío.

$ cadena = '("name": "John Adams");
$ Json_a json_decode = ($ cadena, true);

Usando json_decode con el segundo parámetro se establece en true, hemos asignado una matriz asociativa a la variable $ json_a, por lo que es ahora $ json_a una matriz. Yo uso "_a" para referirse a una matriz asociativa, que luego voy a usar $ json_o para referirse a una variable que contiene la json como un objeto, pero puede utilizar cualquier nombre de variable que desee.

Permítanme traducir el código anterior a un fragmento más familiarizados y básico que está haciendo la misma cosa.

json_a $ = array ("nombre" => "John Adams"); 

/ / O también 

[$ Json_a "nombre"] = "John Adams";
Ahora está claro lo que puede hacer con json_a "$" ¿no? Para mostrar el contenido de "nombre" que simplemente echo $ json_a [nombre] como éste 

echo $ json_a [nombre]; 

/ / Y usted debería ver el nombre de John Adams impreso en su navegador.

Eso fue fácil, ahora vamos a utilizar la cadena json mismo pero esta vez no vamos a establecer el segundo parámetro para que podamos obtener un objeto. Llena tu archivo php con el siguiente código.

$ cadena = '("name": "John Adams");
$ Json_o json_decode = ($ cadena);

Esta vez en lugar de devolver una matriz, json_decode ha devuelto un objeto. El objeto palabra puede sonar un poco intimidante, pero créanme cuando digo esto no es difícil en absoluto.

Para mostrar el contenido de "nombre" todo lo que uno tiene que hacer es esto

echo $ nombre json_o->;

¿Puede decir la diferencia entre la salida y el contenido de $ json_a json_o de $? ¡Eso es! la única diferencia es que con $ json_o a deshacerse de los principales "]" y reemplazar "[" con "->".

echo $ json_a [nombre]; 

/ / Y 

echo $ nombre json_o->; 

/ / Se muestra tanto "John Adams"

La cadena json que hemos estado usando es muy simple, así que voy a hacer un poco más interesante. El contenido de su archivo php hasta este punto debe ser este

$ cadena = '("name": "John Adams");
/ / Crear el objeto de cadena
$ Json_o json_decode = ($ cadena);
/ / Crea matriz de cadena
$ Json_a json_decode = ($ cadena, true);

Cada vez que realiza cambios en el valor de su variable string $ mantener las dos últimas líneas con json_decode para el resto de este tutorial.

$ cadena = '(
                     "Name": "John Adams",
                     "Edad": "40"
                   ) ';
$ Json_o json_decode = ($ cadena);
$ Json_a json_decode = ($ cadena, true);

Como se puede deducir por la forma en la nueva $ cadena se ve, se separa cada conjunto de claves y valores con una coma. Así que para mostrar el valor de edad, que es 40, puede utilizar cualquiera de estos dos métodos.

/ / Modo de matriz asociativa
echo $ json_a [edad]; 

/ / Modo de objeto
echo $ json_o edad->;

Pero esta cadena JSON es demasiado simple, ¿por qué no asignar dos valores en una clave. Luego cadena json nuevo será esto.

$ cadena = '(
                     "Nombre": ("primero": "Juan", "última": "Adams"),
                     "Edad": "40"
                   ) ';

Lo que hemos hecho es que han separado el nombre de "John Adams" en dos "subclaves;", primera y última vez. Es posible mostrar los valores de estas nuevas claves de esta manera.

/ / Array método
  / / Mostrar el primer nombre
 echo $ json_a [nombre] [primer];
  / / Mostrar el apellido
 echo $ json_a [nombre] [pasado]; 

/ / Método de objeto
  / / Mostrar el primer nombre
  echo $ nombre de pila-> json_o->; 

  / / Mostrar el apellido
  echo $ apellido-> json_o->;
Hasta aquí todo bien. Usted ha visto probablemente los símbolos [y] que se utilizan en json y si no lo ha hecho usted en este momento porque eso es lo que nuestra nueva variable string $ incluirá. 

$ cadena = '[
(
"Nombre": ("primero": "Juan", "última": "Adams"),
                                "Edad": "40"
),
(
"Nombre": ("primero": "Thomas", "última": "Jefferson"),
                                "Edad": "35"
)
         ] ';

Usamos [y] para indicar que tenemos una serie de llaves, que es más que un conjunto de () 's. Eso quiere decir entonces, que esta cadena tiene dos matrices, cada una de ellas separadas por (y) y seguido de una coma, excepto para el último. Esta matriz es numérico, por lo que para acceder a la "edad" de la segunda matriz nosotros haremos el siguiente.

/ / Recordar que las matrices comienzan en cero, por eso usamos 1 para referirse a la segunda matriz
/ / Array método
echo $ json_a [1] [edad];
/ / Método de objeto
echo $ json_o [1] - edad>;
En su carrera de desarrollo web se encontrará con otro tipo de cadena de JSON. 

$ cadena = '("persona":
         [
(
"Nombre": ("primero": "Juan", "última": "Adams"),
                "Edad": "40"
),
(
"Nombre": ("primero": "Thomas", "última": "Jefferson"),
                "Edad": "35"
)
]
) ';

Esta cadena es igual que el anterior, excepto que hemos añadido ("persona": al principio y para cerrar, hemos añadido un) al final.

Lo que tenemos aquí es de dos "persona" Conjuntos de una de Juan y uno de Thomas. Se pueden visualizar dos apellidos con este fragmento de código.

/ / Array método
     / / Primera persona "0"
echo $ json_a [persona] [0] [nombre] [pasado];
    / / Segunda persona "1"
echo $ json_a [persona] [1] [nombre] [pasado]; 

/ / Método de objeto
   / / Primera persona "0"
echo $ persona json_o-> [0] -> apellido->;
  / / Segunda persona "1"
echo $ persona json_o-> [1] -> apellido->;

Todo parece estar bien, hasta que tengamos un 100 "persona" matriz o más! Pero no te preocupes. Debido a que estos arreglos son numéricos podemos utilizar un bucle para pasar por un arsenal enorme de esa manera. Me gusta usar "foreach" bucles pero se puede usar ", mientras que", "a favor" o "hacer mientras" bucles si lo desea. El fragmento siguiente le mostrará cómo se puede obtener información de cada persona mediante un bucle foreach.

$ cadena = '("persona": [
(
"Nombre": ("primero": "Juan", "última": "Adams"),
                "Edad": "40"
),
(
"Nombre": ("primero": "Thomas", "última": "Jefferson"),
                "Edad": "35"
)
]) "; 

$ Json_a json_decode = ($ cadena, true); 

$ Json_o json_decode = ($ cadena);
/ / Array método
foreach ($ json_a [persona] US $ p)
(
echo ' 

Nombre: '. $ P [nombre] [primer] ". '. $ P [nombre] [pasado]. " 

Edad: '. $ P [edad]. 

»; 

)
/ / Método de objeto
foreach ($ json_o-> persona US $ p)
(
echo ' 

Nombre: '. $ P-> nombre de pila->.' '. $ P-> apellido->.' 

Edad:. Edad $ p->. ' 

»;
)

Lectura de un JSON es tan fácil y no tiene una extensión especial, el archivo sólo tiene a la salida de una cadena JSON. Para leer un archivo JSON puede utilizar la función file_get_contents así $ cadena = file_get_contents (filepath). Ahora pasa a $ cadena json_decode y analizar.

blog comments powered by Disqus

Previous post: