Ver Mensaje Individual
  #2  
Antiguo 13-09-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Reputación: 19
xEsk Va por buen camino
Hola, con la libreria vienen algunos ejemplos (aunque a mi no me sirvieron de mucho xD).

En un JSON puede haber objetos simples y arrays. Asi pues, puedes encontrarte un JSON que sea sólo un objeto, o un JSON que todo él sea un array o que el JSON sea un mix entre objetos simples y arrays, etc...

Ejemplo de como obtener los objetos principales de un JSON mixto:
Código Delphi [-]
var
  JSON: TlkJSONobject;
  UnObjetoJSON: TlkJSONobject;
  UnArrayJSON,
  OtroArrayJSON: TlkJSONlist;
  n, i: Integer;

begin
  JSON:=TlkJSONobject.Create;
  try
    // parseamos el JSON
    JSON:=TlkJSON.ParseText(ContenidoJSON) as TlkJSONobject;
    
    // Obtenemos los objetos JSON principales
    UnObjetoJSON:=JSON.Field['nombreObjetoJSON'] as TlkJSONobject;
    UnArrayJSON:=JSON.Field['nombreArrayJSON'] as TlkJSONlist;
    OtroArrayJSON:=JSON.Field['nombreOtroArrayJSON'] as TlkJSONlist;
    // ahora ya podemos obtener el contenido de estos 3 objetos JSON

    // ejmplo chorra de obtener un valor de un objeto "normal" JSON
    if UnObjetoJSON.Field['nombreField'].Value = 'Pepito' then 
      begin
        // ...
      end;

    // para recorrer un JSON que es un array, usamos algo asi
    for n:=0 to UnArrayJSON.Count - 1 do
      if UnArrayJSON.Child[n].Field['nombreField'].Value = 'Pepito' then
        begin
          // ...
        end;

    // si se diera el caso que un objeto JSON (sea normal o array) tiene otro(s) array(s) dentro, es tan facil como...
    for n:=0 to OtroArrayJSON.Count - 1 do
      for i:=0 to OtroArrayJSON.Child[n].Count - 1 do
        // y asi, at infinitum...
  finally
    JSON.Free;
  end;

Esto que he hecho de separar los 3 objetos principales (3, porque era un ejemplo... pero pueden ser cualquier valor) lo hago para que me sea mas facil saber con que estoy trabajando, pero no es necesario.

Si el JSON que vas parsear, es todo él un Array, al parsearlo ya lo puedes asignar a un TlkJSONlist, por ejemplo:

Código Delphi [-]
JSON:=TlkJSON.ParseText(ContenidoJSON) as TlkJSONlist;

Bueno, espero que te sirvan estos ejemplos iniciales (tarde mi tiempo en sacarlo, no encontre ayuda por ningún lado xD)... si no puedes con ello, dimelo xD Pones un ejemplo del JSON que quieres parsear, y te intento ayudar.

Saludos.