Leer JSON Con Javascript y PHP

Descargar como odt, pdf o txt
Descargar como odt, pdf o txt
Está en la página 1de 5

Qu es JSON?

Es el acrnimo de JavaScript Object Notation. Si conoces XML, se podra decir que es una alternativa a un sistema de envo y recepcin de datos. El "parseo" o "parsear" es leer o administrar una base de datos o conjunto de texto. La estructura o sintaxis es de la siguiente manera:

Cdigo :
{ "objeto" : valor }

El siguiente ejemplo de estructura est tomado de la API de Vimeo algo recortada:

Cdigo :
[{ "title":"titulo", "description":"Lorem Ipsum Dolor sit Amet", }]

Parseo con Javascript


La manera ms fcil de pasear un JSON con javascript es a travs de jQuery + Ajax con la funcin $.getJSON que es equivalente a:

Cdigo :
$.ajax({ url: url, dataType: 'json', data: data, success: callback });

El cual se utiliza de la siguiente manera:

Cdigo :
$.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )

El siguiente cdigo lo apliqu para extraer ttulo y descripcin de una peticin a la API de Vimeo

Cdigo :
$.getJSON('http://www.vimeo.com/api/v2/video/31894179.json?callback=?', {format: "json"}, function(data) { $("h1").html(data[0].title); $("p").html(data[0].description); });

Bsicamente estoy accediendo con la funcin $.getJSON a la url que me proporciona la documentacin de la API de Vimeo para obtener un JSON (aqu), defino qu formato estoy usando, y ejecuto una funcin a partir del mismo. Dentro de sta, con la funcin .html, "extraigo" el campo del ttulo y descripcin y se los "pongo" a la etiqueta <h1></h1> y <p></p>. Existe el selector data[0] porque solamente estoy obteniendo la primera parte del JSON, si tuviera por ejemplo varios videos, le agregara 0, 1, 2 respectivamente para seleccionar las otras partes.

Parseo con PHP


Para realizar el parseo antes que nada necesitamos saber si la estructura JSON est dentro del archivo a ejecutar o afuera. Si est afuera puedes utilizar cURL para leer el archivo. Necesitamos tambin de una funcin llamada json_decode, esta sirve para convertir un string JSON a una variable que funciona en PHP. El siguiente ejemplo sirvi para llamar ttulo y descripcin de un video utilizando la API de Vimeo.

Para realizar el parseo antes que nada necesitamos saber si la estructura JSON est dentro del archivo a ejecutar o afuera. Si est afuera puedes utilizar cURL para leer el archivo. Necesitamos tambin de una funcin llamada json_decode, esta sirve para convertir un string JSON a una variable que funciona en PHP. El siguiente ejemplo sirvi para llamar ttulo y descripcin de un video utilizando la API de Vimeo.

Cdigo :
//Url donde esta nuestro JSON $req = 'http://vimeo.com/api/oembed.json?url=http://vimeo.com/31894179';

//Iniciamos cURL junto con la URL $cVimeo = curl_init($req);

//Agregamos opciones necesarias para leer curl_setopt($cVimeo,CURLOPT_RETURNTRANSFER, TRUE);

// Capturamos la URL $gVimeo = curl_exec($cVimeo);

//Descodificamos para leer $getVimeo = json_decode($gVimeo,true); //Asociamos los campos del JSON a variables $titulo = $getVimeo['title']; $descripcion = $getVimeo['description']; $thumbnail = $getVimeo['thumbnail_url'];

Cada vez que llamamos a la variable $getVimeo estamos leyendo el archivo JSON, como ya est descodificado gracias a la funcin json_decode es posible buscar los campos "title" y"description". Ya despus es cuestin de llamarlas o agregarlas a nuestro HTML con un echo o lo que quieras. Ya sabes la base y con un ejemplo bastante simple. El parseo es igual en cualquier otro JSON, quizs solo vare en el nmero de secciones que tenga el JSON. Google es tu mejor amigo.

Comentarios:
todo muy bonito, pero no veo la necesidad de usar curl para algo tan simple como eso, con file_get_contents() es suficiente. tambin no veo la necesidad se asociar a variables, si te das cuenta estas duplicando datos en la memoria $gvimeo=json_decode(file_get_contents('URL HERE'),true);

Yo lo he hecho con jQuery, a travs de la funcin $.get() y traigo y/o mando objetos JSON a PHP. Un ejemplo seria algo as: Archivo .js function traerdatos(){ var opciones = {clave: $("#clave").val()}; //despues mando llamar a la funcin .get enviando a PHP mi objeto opciones. $.get( "archivo.php", opciones, function(inyeccion){ $("#nombre").val()=inyeccion.nombre; $("#apellido").val()=inyeccion.apa; }, "json" ); } Ahora la parte de PHP. $clave = $_GET["clave"]; //estoy obteniendo el valor que nos llego a travs de la funcion $.get() //aqui me conecto a la base.. busco el registo a travs de la clave, etc, etc. //ya que tengo los datos ahora los mando de regreso. $json = json_encode( array( "nombre"=>$rs[Nombre], //$rs es la variable con el registro que buscamos en la base de datos "apa" => $rs[apa] ) ); echo $json; //con esto le mandamos el objeto JSON a la funcin $.get() de nuestro archivo .js Bueno as es como a mi me ha funcionado muy bien.

PHP, guarda en el objeto $_GET todas las variables que hallas enviado en un objeto JSON a traves de la funcion $.get() de jQuery, no he tenido que usar la funcin json_decode(). Bueno espero que sirva de algo mi comentario.

También podría gustarte