Crear JSON con PHP

  • 23/11/2008
  • 10:43 pm
  • unijimpe

JSON (JavaScript Object Notation) el formato de intercambio de datos basado en objetos javascript es ampliamente utilizado por la facilidad para codificar y decodificar y por su poco tamaño, en esta ocasión presentamos la forma de generar estos datos con PHP.

JSON con PHP4

En PHP4 JSON no es manejado nativamente por lo cual necesitamos una clase, para ello tenemos JSON.php una clase escrita por Michal Migurski el cual tiene dos métodos encode y decode para manipular rápidamente datos en formato JSON.

Entonces para utilizar esta clase, la incluimos al inicio de nuestro script, y creamos una variable de la clase Services_JSON, luego de ello creamos un array con la información que deseamos codificar y luego utilizamos el método encode.

  1. require_once("JSON.php");   
  2. $json = new Services_JSON;
  3. $data = array("nombre" => "Albert", "apellido" => "Camus");
  4. echo $json->encode($data);

Esto es con un array sencillo, veamos si utilizamos un array multidimensional, por ejemplo un listado de autores.

  1. require_once("JSON.php");   
  2. $json = new Services_JSON;
  3. $data[0] = array("nombre" => "Albert", "apellido" => "Camus");
  4. $data[1] = array("nombre" => "Ernesto", "apellido" => "Sabato");
  5. echo $json->encode($data);

Pueden ver el resultado de este ejemplo en data.php. Ahora si queremos hacer un ejemplo mas complejo, podemos extraer los datos de una tabla de una base de datos MySQL, con lo cual nuestro código sería de la forma:

  1. require_once("JSON.php");
  2. $json = new Services_JSON;
  3. $conexion = mysql_connect("localhost", "usuario", "clave");
  4. mysql_select_db("demo", $conexion);
  5.  
  6. $queEmp = "SELECT * FROM empresa ORDER BY nombre ASC";
  7. $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
  8. $totEmp = mysql_num_rows($resEmp);
  9.  
  10. while ($rowEmp = mysql_fetch_assoc($resEmp)) {
  11.     $data[] = $rowEmp;
  12. }
  13. echo $json->encode($data);

El resultado de este ejemplo lo pueden ver en mysql.php y como pueden ver la generación de datos en formato JSON es muy sencillo.

JSON con PHP5

A partir de la versión 5.2.0 de PHP fueron añadidas las funciones json_encode y json_decode para manipular nativamente datos en JSON, luego nuestro segundo ejemplo se reduciría al siguiente código:

  1. $data[0] = array("nombre" => "Albert", "apellido" => "Camus");
  2. $data[1] = array("nombre" => "Ernesto", "apellido" => "Sabato");
  3. echo json_encode($data);

Obviamente el código es mas pequeño y tiene mejor rendimiento. Ahora esta forma de generar los datos en formato JSON combinado con Javascript, Mootools o con Flash pueden hacer de nuestras web verdaderas aplicaciones interactivas.

Posts Relacionados

Total de Comentarios: 8

Publicidad
josepex
24/11/2008
1:28 am

Gracias Jim justo estaba haciendo un proyecto con json y me facilitaste la vida XD.
Salu2 y como dices: siempre tratando de dar el 100% del esfuerzo.

24/11/2008
2:38 pm

No entiendo muy bien el uso de JSON en Flash.
¿No es más práctico leer los datos en formato XML?

24/11/2008
4:22 pm

Leer los datos en XML es lo mas usado, pero no mas practico, primero que si la data esta en JSON es menos información la que se transfiere, pues se envían todos los datos como nombre de nodos y de atributos. El segundo punto es que al llegar en JSON se decodifica y la información ya esta como un objeto con lo cual es mas sencillo acceder a todos sus elementos sin necesidad de estar parseando como con XML. Puedes leer acerca de como utilizar JSON con actionscript en JSON con Flash.

djfenix chile
26/11/2008
8:19 pm

wow!, me has iluminado, vi la luz, he abierto los ojos (es broma!) realmente es interesante, hoy pondre en practica algunas aplicaciones a ver como resulta esto

27/11/2008
6:59 am

Gracias por la aclaración.
Una pregunta más.
El apaño que se hace habitualmente con XML para enviar datos en con etiquetas HTML y saltos de linea de hacer “”

¿Con JSON no sería necesario, estarían los datos dentro de un Object?

27/11/2008
11:16 am

Vaya solo han salida comillas.
Había ecrito

27/11/2008
11:17 am

Bueno, no sale… :(
Me refería al CDATA

Claudio
18/06/2009
12:33 pm

el CDATA, si lo ponias entre angulos, es probable que te lo haya limpiado el mecanismo de comentarios, eso se suele hacer para eliminar potenciales instrucciones que provocarian problemas de seguridad. en un sitio una vez alguien o algo me ponia links de spam en los comentarios, asi que empece a filtrar todo lo que estuviera entre angulos o signos mayor y menor.

Enviar Comentario

(*)

(*)