JSON es un formato de intercambio de información muy practico pues se puede compartir datos como si fueran objetos, originalmente pensado para usarse con Javascript hoy veremos la forma de utilizarlo con PHP.
Como utilizar JSON con PHP
Si estamos utilizando PHP4 necesitaremos una clase que encargue de codificar/decodificar los datos en formato JSON. Para ello descargamos la clase JSON.php. Luego de ello la incluimos en nuestro archivo y la inicializamos llamando a Services_JSON para luego decodificar los datos con el método decode.
-
require_once("JSON.php");
-
$json = new Services_JSON;
-
$obj = $json->decode($data)
Ejemplo de uso
Para desarrollar nuestro ejemplo, obtendremos los datos de Google AJAX Search API, el cual es un servicio que nos utilizar los resultados de búsqueda de Google y devuelve los datos en JSON. Para ello si deseamos obtener los datos de la búsqueda de la palabra 'Google' podremos acceder a http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Google, el cual devolverá los resultados en el siguiente formato:
-
{"responseData":
-
{ "results": [
-
{
-
"GsearchResultClass": "GwebSearch",
-
"unescapedUrl": "http://en.wikipedia.org/wiki/Paris_Hilton",
-
"url": "http://en.wikipedia.org/wiki/Paris_Hilton",
-
"visibleUrl": "en.wikipedia.org",
-
"cacheUrl": "http://www.google.com/search?...",
-
"title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
-
"titleNoFormatting": "Paris Hilton",
-
"content": "In 2006, she released her debut..."
-
},
-
{
-
"GsearchResultClass": "GwebSearch",
-
"unescapedUrl": "http://www.imdb.com/name/nm0385296/",
-
"url": "http://www.imdb.com/name/nm0385296/",
-
"visibleUrl": "www.imdb.com",
-
"cacheUrl": "http://www.google.com/search?...",
-
"title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
-
"titleNoFormatting": "Paris Hilton",
-
"content": "Self: Zoolander. Socialite..."
-
},
-
...
-
],
-
"cursor": {
-
"pages": [
-
{ "start": "0", "label": 1 },
-
{ "start": "4", "label": 2 },
-
{ "start": "8", "label": 3 },
-
{ "start": "12","label": 4 }
-
],
-
"estimatedResultCount": "59600000",
-
"currentPageIndex": 0,
-
"moreResultsUrl": "http://www.google.com/search?..."
-
}
-
}, 200, null)
-
}
Como pueden ver, toda la información esta estructurada como un objeto con lo cual es muy sencillo de acceder a todos los elementos como veremos a continuación.
Ahora el siguiente paso es obtener los datos de la ruta indicada y decodificarlas para posteriormente mostrarlas en nuestro HTML. Nótese que para hacer uso de este servicio es necesario tener un key, el cual es gratuito y lo pueden obtener en Sign-up for an AJAX Search API Key.
-
require_once("JSON.php");
-
// read data
-
$aQue = "Google";
-
$aKey = "TU_API_KEY";
-
$aUrl = "http://ajax.googleapis.com/ajax/services/search/web";
-
}
-
// decode data
-
$json = new Services_JSON;
-
$obj = $json->decode($data);
Hasta este punto tenemos los datos en la variable $obj, luego en el cuerpo de nuestro html hacemos un recorrido por cada elemento de los resultados. Como se puede ver en el siguiente código se accede a los elementos como objetos de manera sencilla.
-
$results = $obj->responseData->results;
-
for ($i=0; $i<sizeof($results); $i++) {
-
$tmp = $results[$i];
-
$tmpHTML.= "<a href=\"".$tmp->url."\">".$tmp->title."</a>";
-
$tmpHTML.= "<br />".$tmp->content."<br/>";
-
$tmpHTML.= "<i>".$tmp->url."</i><br /><br />";
-
}
-
echo $tmpHTML;
Podemos mejorar nuestro ejemplo si le agregamos una caja de texto para que ingrese su búsqueda y además de una hoja de estilos para que se vean mejor los resultados, con lo cual obtenemos /json/php.php.
Posts Relacionados


Comentarios Total 4 comentarios
Publicado: 14/06/2009 11:41 pm
Para variar… excelente artículo!
Si me permites, comentar que a partir de PHP version 5.2 la codificación y decodificación de JSON ya no necesita de usar una clase como la de JSON.php que tú muy bien explicas, sino que el PHP trae dos funciones nativas que lo hacen:
json_encode($data);
json_decode($data);
Se puede leer más aquí:
http://www.php.net/manual/es/function.json-decode.php
Un saludo,
SERGI
Publicado: 02/07/2009 11:38 am
hola alguien me podria recomendar u hosting gratis que soporte esto y lo de sprytube?
Publicado: 15/07/2009 11:06 pm
[...] Obteniendo la información Entonces primero creamos el URL de la consulta y luego leemos los datos haciendo uso de la función file_get_contents. Como esta información es devuelta en formato JSON utilizaremos la librería JSON.php de la cual comentamos en JSON con PHP. [...]
Publicado: 20/07/2009 12:09 am
[...] podemos utilizar la librería JSON.php de la cual hemos comentado en JSON con PHP, entonces crearemos una función llamada getShortenURL que recibirá el URL y lo [...]