JSON (JavaScript Object Notation) en Delphi

JSON (JavaScript Object Notation - NotaciĆ³n de Objetos de JavaScript) es un formato ligero de intercambio de datos. Se basa en un subconjunto del lenguaje de ProgramaciĆ³n JavaScript. Es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidas por los programadores de la familia de lenguajes de C/C++, Java, JavaScript, Perl, Python, etc. De esta manera JSON se convierte en un lenguaje ideal para el intercambio de datos.

JSON estĆ” constituido por dos estructuras:
  • Una colecciĆ³n de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un array asociativo.
  • Una lista ordenada de valores. En la mayorĆ­a de los lenguajes, esto se implementa como arreglos, vectores, listas o secuencia.
Estas son estructuras universales; virtualmente todos los lenguajes de programaciĆ³n las soportan de una forma u otra. Cada vez hay mĆ”s soporte de JSON mediante el uso de paquetes escritos por terceras partes. La lista de lenguajes soportados incluye ActionScript, C, C#, ColdFusion, Common Lisp, Delphi, E, Eiffel, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, y Lua.

En la web oficial de JSON, json.org, podemos encontrar toda la lista de lenguajes que incorporan JSON. En este caso, yo voy a mostrar un ejemplo de la JSON Delphi Library. En esta librerĆ­a Open Source, podemos encontrar el desarrollo de JSON y varios proyectos de ejemplo para que podamos ver su configuraciĆ³n y utilizaciĆ³n. AdemĆ”s, en la web de json.org, tambiĆ©n nos hablan de 2 proyectos mĆ”s para delphi, JSON Super Objects, y uJson.

Si analizamos el ejemplo, lo veremos un poco mƔs claro:




program sample3;

{$APPTYPE CONSOLE}

uses
variants,
SysUtils,
uLkJSON in 'uLkJSON.pas';

var
js,xs:TlkJSONobject;
ws: TlkJSONstring;
s,s2, s1, s3: String;
begin
s := '{"\"string1\"":"123","\"string2\"":"5676","\"string3\"":"test",'+
'"childobject":{"objstr1":"Oone","objstr2":"Otwo","objstr3":"Othree"}}';
js := TlkJSON.ParseText(s) as TlkJSONobject;

s1 := vartostr(js.Field['"string1"'].Value);
writeln(s1);
s2 := vartostr(js.Field['"string2"'].Value);
writeln(s2);
s3 := vartostr(js.Field['"string3"'].Value);
writeln(s3);

readln;
js.Free;
end.




Como podemos ver, la cadena de texto formada por :
s := '{"\"string1\"":"123","\"string2\"":"5676","\"string3"":"test",'+"childobject":"objstr1":"Oone",
"objstr2":"Otwo","objstr3":"Othree"}}';

hace algo parecido a las regular expresions de mi anterior post. Luego el protocolo JSON, parsea el texto en busca de las keywords que tiene definidas, y de esta manera obtiene los registros string1, 2 y 3. La salida por pantalla de programa:

AdemƔs, como he indicado antes, al ser ideal para el intercambio de datos, tenemos el protocolo JSON RPC (Llamada de procedimiento remoto con JSON). Hace varios meses, colguƩ un post sobre XML-RPC que utiliza XML para realizar la llamada de procedimiento remoto. Ahora con json, tendrƭamos que mirar si el funcionamiento puede mejorar en vez de utilizar el XML.

  • Enlaces de interĆ©s:
JSON in J2ME.
JSON con PHP.

Comments

Popular Posts