Recompilando PHP y usando JSON

Hace 2 dias recompilé PHP para activar un par de extensiones, entre ellas la tidy html (para limpieza de código html) y la JSON (javascript Serialize Object Notation) para intercambiar (mas que todo objetos) entre el cliente web y el servidor; sin embargo, para mi sorpresa hoy (mejor dicho, ayer a mediados de la tarde) han liberado PHP 5.2.0, que trae a tidy y a json incluidos *by default* con lo cual decidí hacer un upgrade a mi estación de trabajo (este servidor seguirá el ejemplo que el portatil dió en un par de días luego de las pruebas de rigor).

Lo que puedo asegurar luego de las pruebas es que tanto la ampliación de javascript para JSON como la extensión de PHP para JSON son la mar de sencillas de utilizar; en el primer caso con simplemente hacer var sjson = oExample.toJSONString(); entonces contamos con que cualquier string, objeto u array será convertido a la notación JSON:
ej javascript:

var oExample = new Object();
oExample.id = 10;
oExample.className = 20;
oExample.position = 30;
oExample.value = «Jesus»;
oExample.newValue = «Lara»;

es llevado a la forma:
{«id»:10,»className»:20,»position»:30,»value»:»Jesus»,»newValue»:»Lara»}

La cual puede ser enviada facilmente a través de AJAX usando POST.
Del lado del servidor, podemos contar con algo parecido y es que podemos tomar los datos recibidos y con $obj = json_decode($json); obtendremos un objeto con todas las mismas propiedades del objeto javascript, es decir $obj->value o $obj->className.

Pero eso no queda allí, si tomamos cualquier clase y creamos un objeto:

ej php:
class objeto {
public $id = 10;
public $className = 20;
public $position = 30;
public $value = ‘Jesus’;
public $newValue = ‘Lara’;
}
$obj = new objeto();

podemos entonces con $strjson = json_encode($obj); obtener la misma version serializada pero ahora para javascript de un objeto PHP, podemos serializar casi cualquier cosa, exceptuando recursos (como datastreams o conexiones a bases de datos), haciendolo mucho más flexible y potente que las soluciones ajax basadas en XML.

Por cierto, el unico punto en contra a JSON es que no es tan «Human readable» como XML, pero al final de cuentas, tanto JSON como XML son strings para alimentar aplicaciones AJAX y no van a ser vistos por ojos humanos, asi que que importa si el string de JSON es mas complejo (aunque mas compacto) que el XML si nunca lo vamos a ver de frente? …

por cierto, y para terminar, el objeto php serializado que hemos recibido lo podemos devolver a una forma javascript con la siguiente linea de codigo:

var oExample = a.parseJSON();
document.getElementById(«resultado»).innerHTML = oExample.value+’ ‘+oExample.newValue;

Con lo cual como observan, contamos con la flexibilidad de enviar objetos sumamente complejos y grandes cantidades de datos en un solo y unico string sin tener que estar haciendo parsing de una estructura xml (que de por si es bastante engorroso andar pensando en childNodes y getElementsByTagName cuando podemos tener todo en un objeto, DOM queda para otras situaciones).

Les contaré de mis progresos por esta via …

Deja un comentario