Leer JSON Con Javascript y PHP
Leer JSON Con Javascript y PHP
Leer JSON Con Javascript y PHP
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 }
Cdigo :
[{ "title":"titulo", "description":"Lorem Ipsum Dolor sit Amet", }]
Cdigo :
$.ajax({ url: url, dataType: 'json', data: data, success: callback });
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.
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';
//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.