Los que trabajamos con Flash Lite sabemos los grandes problemas que hay a la hora de utilizar XMLs e intentar liberar memoria.
Como alternativa podemos usar JSON (JavaScript Object Notation), un sistema de intercambio de archivos basado en JavaScript que se puede utilizar en reemplazo a XML.
Las ventajas de JSON enfrente a XML cuando trabajamos con Flash Lite son:
- Se carga como un archivo de datos y se guarda en un string.
- Podemos convertirlo en objeto con un parseador.
- Gracias a que es un objeto y un string, podemos liberarlo fácilmente de la memoria.
La gran desventaja es que el parseo se hace en cliente pero he hecho pruebas y lleva unos pocos milisegundos, generalmente menos de 100ms, con lo que estamos ante unos tiempos muy aceptables.
La sintaxis es bastante fácil, por ejemplo, esto sería un archivo XML:
Código :
<config> <item> <nombre>Pepito</nombre> <apellidos>Grillo</apellidos> <edad>120</edad> </item> <item> <nombre>Matusalen</nombre> <apellidos>McKenzie</apellidos> <edad>4000</edad> </item> </config>
Y esta su versión en JSON:
Código :
{ "config": { "item": [ { "nombre" : "Pepito", "apellidos" : "Grillo", "edad" : "120" }, { "nombre" : "Matusalen", "apellidos" : "McKenzie", "edad" : "4000" } ] } }
De esta forma podríamos cargar un archivo JSON y parsearlo con una clase JSON.as de código abierto que nos dan en la web oficial de JSON.
Código :
import mx.utils.Delegate; var oResult:Object; var dataLoader:LoadVars; dataLoader = new LoadVars(); dataLoader.onLoad = Delegate.create(this, onLoadData); dataLoader.sendAndLoad("ot.txt", dataLoader, "POST"); function onLoadData():Void { trace("BEGIN :: " + getTimer()); var json:JSON = new JSON(); var jsonStr:String = dataLoader.toString(); jsonStr = unescape(jsonStr.split("=&onLoad=[type Function]")[0]); oResult = json.parse(jsonStr); for (var i=0; i<oResult.config.item.length; i++) { trace("nombre: " + oResult.config.item[i].nombre); trace("apellidos: " + oResult.config.item[i].apellidos); trace("edad: " + oResult.config.item[i].edad); trace("========================="); } dataLoader = null; trace("END :: " + getTimer()); }
Fácil de usar, ligero y perfecto para aplicaciones Flash Lite.
En BlocketPc publiqué un análisis sobre lo que ocupa en memoria XML y JSON, así como unos ejemplos de descarga que son un buen complemento a este tip
Un saludo!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zguillez el 29 de Enero de 2009
Por leobaraldi el 29 de Enero de 2009
Por eparada el 29 de Enero de 2009
Por Otaku RzO el 29 de Enero de 2009
Buena profe Raul
Por Xyrer el 29 de Enero de 2009
Por eldervaz el 29 de Enero de 2009
Por Adsl5mb el 30 de Enero de 2009
Por Peter el 10 de Marzo de 2009
Por Peter el 10 de Marzo de 2009