Comunidad de diseño web y desarrollo en internet

Uso de JSON en Flash Lite

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.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate