You are on page 1of 12

JSON I Qu es y para qu sirve JSON?

Cuando todos nos iniciamos en el mundo de la programacin web llegamos a un punto en el que necesitamos gestionar de forma sencilla y eficaz mucha informacin. Para los que no os suene el nombre de JSON, enhorabuena porque con esta serie de tutoriales vais a dar un gran paso en vuestro aprendizaje. Los tutoriales se van a dividir en cuatro posts en los que abarcaremos los siguientes temas: . Qu es y para qu sirve JSON?. !. Creacin de un "#$% a partir de una consulta en &y#'L.
3. (estionar un "#$% en P)P.

*. +jemplo pr,ctico de uso de "#$%. -s. pues/ vamos a empezar a crear nuestro primer tutorial sobre "#$%. Lo primero que nos preguntamos es:

Qu es y para que sirve JSON?


JSON (JavaScript Object Notation) es un formato para el intercambios de datos/ b,sicamente "#$% describe los datos con una sinta0is dedicada que se usa para identificar y gestionar los datos. "#$% naci como una alternativa a XM / el f,cil uso en !avascript ha generado un gran numero de seguidores de esta alternativa. 1na de las mayores ventajas

que tiene el uso de "#$% es que puede ser le.do por cualquier len"ua!e #e pro"ra$aci%n. Por lo tanto/ puede ser usado para el intercambio de informacin entre distintas tecnolog.as. 2eamos un sencillo ejemplo de "#$%: 3maginemos que tenemos una fruter.a y que queremos obtener el nombre y la cantidad de fruta y verdura que tenemos. +n un principio vamos a suponer que tenemos lo siguiente: 4 5ruta:

6 manzanas !6 Peras 76 %aranjas

4 2erduras

86 lechugas 9 tomates 96 pepinos

Para empezar/ nos tenemos que &a$iliari'ar con la sinta(is #e Json:

JSON No$)re*+ar #e ,alores


Para asignar a un nombre un valor debemos usar los dos puntos : -. este separador es el equivalente al igual ;:<=> de cualquier lenguaje.

?%ombre? : ?(ee@y Aheory?

,alores Json
Los tipos de valores que podemos encontrar en "son son los siguientes:

1n n/$ero ;entero o float> 1n strin" ;entre comillas simples> 1n )ooleano ;true o false>

1n array ;entre corchetes BC > 1n o)!eto ;entre llaves DE> Null

O)!etos JSON
Los objetos "#$% se identifican entre corchetes/ un objeto puede ser en nuestro caso una fruta o una verdura

D ?%ombre5ruta?:?&anzana? / ?Cantidad?:!6 E

0rrays JSON
+n un "son puedes incluir arrays/ para ellos el contenido del array debe ir entre corchetes BC:

! 7 * 9 F G

D ?5rutas?: B D ?%ombre5ruta?:?&anzana? / ?cantidad?: 6 E/ D ?%ombre5ruta?:?Pera? / ?cantidad?:!6 E/ D ?%ombre5ruta?:?%aranja? / ?cantidad?:76 E C E

1na vez e0plicado el funcionamiento de la sinta0is "#$%/ vamos a aplicar nuestro ejemplo de la fruter.a.

! 7 * 9 F G 8 H 6 ! 7 * 9 F G 8

D?5ruteria?: B D?5ruta?: B D?%ombre?:?&anzana?/?Cantidad?: 6E/ D?%ombre?:?Pera?/?Cantidad?:!6E/ D?%ombre?:?%aranja?/?Cantidad?:76E C E/ D?2erdura?: B D?%ombre?:?Lechuga?/?Cantidad?:86E/ D?%ombre?:?Aomate?/?Cantidad?: 9E/ D?%ombre?:?Pepino?/?Cantidad?:96E C E C E

Como podemos observar/ hemos creado un objeto llamado frutera y/ dentro de ese objeto hemos almacenado un array #e #os ele$entos. +l primer elemento del array contiene un objeto llamado fruta y el segundo elemento del array contiene otro objeto llamado verdura. +stos objetos a su vez contienen un array cuyo contenido es el nombre y la cantidad de cada fruta o verdura. 3maginemos que nos gustar.a saber la cantidad de manzanas que tenemos. +l path de este array ser.a el siguiente:

Path: jsonBI5ruteriaICB6CBI5rutaICB6CBICantidadIC $bservamos que la cantidad de manzanas se almacena dentro del primer elemento del array que contiene el objeto Frutera/ y a su vez dentro del primer elemento del array que contiene el objeto Fruta. Aodo esto parece un poco confuso/ pero una vez que se domina veremos que tenemos ante nosotros una gran 1erra$ienta #e #esarrollo. +0isten herramientas online que ayudan a visualizar mejor un "#$%. 1na de las mejores herramientas que he visto es la p,gina "#$% 2iewer. #i introducimos nuestro ejemplo observamos lo siguiente:

J esto es todo. +n lo si"uientes tutoriales vamos a ver cmo generar un "#$% a partir de una consulta en MySQ / esto nos proporcionar, una herramienta Ktil a la hora de obtener datos de la base de datos.

JSON II 2reaci%n #e un JSON a partir #e una consulta en MySQ

+n este segundo tutorial sobre JSON vamos a aprender a generar un JSON a partir de una consulta en MySQ . +ste tutorial es el segundo tutorial de una serie de tutoriales sobre JSON. &e gustar.a pedir disculpas por haber tardado tanto en hacer esta segunda parte/ pero cuando se est, de +rasmus en 3rlanda el tiempo vuela/ y como lo prometido es deuda aqu. estamos #i no has visto el tutorial n/$ero I/ te recomiendo que lo veas con determinacin ya que es la base de JSON. PodLis ver a continuacin los enlaces a los dem,s tutoriales de esta serie. . M'uL es y para quL sirve "#$%N. 34 2reaci%n #e un JSON a partir #e una consulta en MySQ 4
3. (estionar "#$% en P)P.

*. +jemplo pr,ctico de uso de "#$%. Por lo tanto/ sin m,s rodeos podemos empezar nuestro segundo tutorial de JSON. +ste segundo tutorial de JSON lo vamos a dividir en 7 partes:

(enerar una cone(i%n a la base de datos. $btener un array $ulti#i$ensional de una consulta. (enerar JSON a partir del array.

5enerar una cone(i%n a la )ase #e #atos

Para todos aquellos que estLn familiarizados con las bases de datos se pueden saltar este punto. +n caso contrario/ prestad atencin. Para generar una consulta en una base de datos primero tenemos que generar una cone0in con esta/ para hacer esto en +6+ podemos usar las funciones que vienen por defecto en +6+7/ estas funciones ayudan mucho a la hora de gestionar la informacin de la base de datos. 1na vez realizada la consulta debemos de eliminar la cone0in a la base de datos. Para conectarnos a la base de datos podemos usar sencilla funcin implementada por m.:

function connectOP;>D ! 7 * 9 F G 8 H 6E +sta funcin devuelve en una variable la cone0in a la base de datos/ esta cone0in ser, importante a la hora de realizar la consulta. Para la #escone(i%n de la base de datos usamos la siguiente funcin: Qcone0ion < mysqliRconnect;?#+S2+S?/ ?1#+S?/ ?P-##?/ ?P-#+O+O-A$#?>T if;Qcone0ion>D echo ILa cone0in de la base de datos se ha hecho satisfactoriamenteUbrVIT EelseD echo I)a sucedido un error inesperado en la cone0in de la base de datosUbrVIT E return Qcone0ionT

function disconnectOP;Qcone0ion>D ! 7 * 9 F G 8 H 6 Qclose < mysqliRclose;Qcone0ion>T if;Qclose>D echo ILa descone0in de la base de datos se ha hecho satisfactoriamenteUbrVIT EelseD echo I)a sucedido un error inesperado en la descone0in de la base de datosUbrVIT E

return QcloseT !E +sta funcin devuelve un par8$etro )ooleano indicando si la descone0in a tenido L0ito o no.

O)tener un array $ulti#i$ensional #e una consulta


+l siguiente paso que debemos seguir es la realizacin de la consulta. Para realizar la consulta tambiLn podemos usar otra sencilla funcin implementada por m.. +sta funcin tiene como par,metro de entrada una or#en SQ . Para m,s informacin sobre sentencias SQ recomiendo que mirLis esta p,gina 9:Sc1ool4

! 7 * 9 F G 8 H 6

function get-rray#'L;Qsql>D WWCreamos la cone0in con la funcin anterior Qcone0ion < connectOP;>T WWgeneramos la consulta mysqliRsetRcharset;Qcone0ion/ ?utf8?>T WWformato de datos utf8 if;XQresult < mysqliRquery;Qcone0ion/ Qsql>> die;>T WWsi la cone0in cancelar programa Qrawdata < array;>T WWcreamos un array

! 7 * 9 F G 8 H !6 ! !! !7 !* !9 E

WWguardamos en un array multidimensional todos los datos de la consulta Qi<6T while;Qrow < mysqliRfetchRarray;Qresult>> D QrawdataBQiC < QrowT QiYYT E disconnectOP;Qcone0ion>T WWdesconectamos la base de datos return QrawdataT WWdevolvemos el array

Como se puede observar esta funcin devuelve un array $ulti#i$ensional/ es decir una matriz. Para que entend,is como funciona imaginaos una tabla. donde tenemos columnas y

filasT las columnas vienen representadas por los tipos de datos que hemos solicitado a la base de datos/ y las filas vienen representadas por el dato en s.. Pongamos un ejemplo: imaginaos que tenemos una base de datos de una &ruter;a/ en una tabla de esta base de datos tenemos 7 columnas/ que son i#<&ruta/ no$)re<&ruta y canti#a#. +sta tabla esta llena de datos/ para que se vea el ejemplo imaginemos que tenemos la siguiente tabla ejemplo: i#<&ruta no$)re<&ruta canti#a# &anzana 66 ! Platano FG 7 Pera 8!6 -s. pues/ si pasamos la sentencia SQ que genera esta tabla en nuestra funcin obtendremos un array multidimensional. #i por ejemplo queremos obtener la canti#a# #e platanos tan slo tendriamos que buscar en el array de la siguiente forma:

arrayB CB!CT 9arnin"= Los indices de un array empiezan por cero. Para m,s informacin ver tutorial 4 -rrays en P)P4.

5enerar JSON a partir #el array


1na vez que ya tenemos nuestro array multidimensional tan solo nos queda transformar los datos de nuestro array a un formato JSON. Para ello tenemos la suerte de que +6+ nos ayuda en esta tarea/ as. pues/ usaremos la funcin json_encode($array). #i hacemos un echo del resultado de esta funcin nos encontraremos con algo parecido a esto:

BD?6?:? ?/?idRfruta?:? ?/? ?:?&anzana?/?nombreRfruta?:?&anzana?/?!?:? 66?/?cantidad?:? 66?E/ D?6?:?!?/?idRfruta?:?!?/? ?:?Platano?/?nombreRfruta?:?Platano?/?!?:? FG?/?cantidad?:? FG ?E/D?6?:?7?/?idRfruta?:?7?/? ?:?Pera?/?nombreRfruta?:?Pera?/?!?:?8!6?/?cantidad?:?8!6?EC

Podemos observar m,s gr,ficamente este JSON con la herramienta de visualizacin de "#$% llamada JSONvie>er. 1n ejemplo completo de este tutorial ser.a el siguiente/ donde tendremos que rellenar las variables que aparecen al inicio del script.

UNphp ! 7 Qsql < ?#'L? WWejemplo fruter.a: #+L+CA idRfruta/nombreRfruta/cantidad 5S$& * tablaRfrutaT 9 F function connectOP;>D G 8 Qserver < ?#+S2+S?T H Quser < ?1#+S?T 6 Qpass < ?P-##?T Qbd < ?PO?T ! 7 Qcone0ion < mysqliRconnect;Qserver/ Quser/ Qpass/Qbd>T * 9 if;Qcone0ion>D F echo ILa cone0ion de la base de datos se ha hecho satisfactoriamenteUbrVIT G EelseD 8 echo I)a sucedido un error ine0perado en la cone0ion de la base de datosUbrVIT H E !6 ! return Qcone0ionT !! E !7 !* function disconnectOP;Qcone0ion>D !9 !F Qclose < mysqliRclose;Qcone0ion>T !G !8 if;Qclose>D !H echo ILa descone0ion de la base de datos se ha hecho satisfactoriamenteUbrVIT 76 EelseD 7 echo I)a sucedido un error ine0perado en la descone0ion de la base de 7! datosUbrVIT 77 E 7* 79 return QcloseT

E 7F 7G function get-rray#'L;Qsql>D 78 WWCreamos la cone0in con la funcin anterior 7H Qcone0ion < connectOP;>T *6 * WWgeneramos la consulta *! *7 mysqliRsetRcharset;Qcone0ion/ ?utf8?>T WWformato de datos utf8 ** *9 if;XQresult < mysqliRquery;Qcone0ion/ Qsql>> die;>T WWsi la cone0in cancelar programa *F *G Qrawdata < array;>T WWcreamos un array *8 *H WWguardamos en un array multidimensional todos los datos de la consulta 96 Qi<6T 9 9! while;Qrow < mysqliRfetchRarray;Qresult>> 97 D 9* QrawdataBQiC < QrowT 99 QiYYT 9F E 9G 98 disconnectOP;Qcone0ion>T WWdesconectamos la base de datos 9H F6 return QrawdataT WWdevolvemos el array F E F! F7 Qmy-rray < get-rray#'L;Qsql>T F* echo jsonRencode;Qmy-rray>T NV

J esto es todoT en el siguiente tutorial vamos a ver cmo obtener y "estionar los #atos #e un JSON en +6+. -s. pues/ si os ha gustado el tutorial os pido que lo compart,is en vuestras redes sociales/ para que la comunidad de (ee@y Aheory crezca. AambiLn me gustar.a motivaros a que colaborLis con nosotros escribiendo vuestros propios tutoriales, revie>s o noticias. 1n saludoXXX

&anzana 66 ! ! Pl,tano FG 7 7 Pera 8!6

?ecorrer y recuperar valores #e un o)!eto JSON con un )ucle &or4

for;Qi<6TQiUcount;Qarray>TQiYY>D ! QidRfruta < QarrayBQiC4VidRfrutaT 7 QnombreRfruta < QarrayBQiC4VnombreRfrutaT * Qcantidad < QarrayBQiC4VcantidadT 9 echo QidRfruta.? ?.QnombreRfruta.? ?.QcantidadT F echo ?UbrV?T GE +l resultado es el mismo que tiene el apartado anterior

&anzana 66 ! ! Pl,tano FG 7 7 Pera 8!6

Pueno y esto es todo/ hasta hoy hemos visto los principios b,sicos de un JSON/ hemos creado un "#$% a partir de una consulta MySQ y hemos gestionado el "#$% creado para obtener los datos. +n el siguiente tutorial vamos a recopilar todo lo aprendido mediante un ejemplo pr,ctico completo.

You might also like