Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2008
Avatar de Cecil
Cecil Cecil is offline
Miembro
 
Registrado: may 2007
Posts: 97
Poder: 17
Cecil Va por buen camino
JSON en aplicacion Delphi

Como bien dice el título, necesito leer el un fichero JSON. He estado buscando y me he topado con la libreria lkJSON 1.04. Las he instalado bien y demás. El gran problema es al comenzar a usarlas, no se por donde empezar y no encuentro una buena guía para dicha labor. ¿Alguien ha usado esta libreria y sabría explicarme un poco por donde empezar? o ¿alguien me recomienda alguna mejor?. Gracias por vuestro tiempo.

__________________
"There is nothing either good or bad, but thinking makes it so" William Shakespeare.
  #2  
Antiguo 13-09-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 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.
  #3  
Antiguo 15-09-2008
Avatar de Cecil
Cecil Cecil is offline
Miembro
 
Registrado: may 2007
Posts: 97
Poder: 17
Cecil Va por buen camino
Muchisimas gracias, tus ejemplos me han ayudado a entender mejor esto.
__________________
"There is nothing either good or bad, but thinking makes it so" William Shakespeare.
  #4  
Antiguo 13-09-2012
noelia89 noelia89 is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
noelia89 Va por buen camino
Hola! cómo estan?

Hay forma de hacer esto que ustedes detallan sin necesidad de usar TlkJSON, osea directamente con DBXJSON que trae delphi?
Estoy intentando hacerlo y no puedo listar los objetos que están dentro de otros objetos, me lista solo los principales.

Esto hago:

Código Delphi [-]
for I := 0 to JSON2.Size - 1 do
begin
MObj.Lines.Add(JSON2.Get(I).JsonString.Value + ' : ' + JSON2.Get(I).JsonValue.Value);
end;

JSON2 es un TJSONobject.

Gracias!!
  #5  
Antiguo 13-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Tema Cerrado


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como instalo una aplicacion hecha en delphi 6. con bdd de paradox sin instalar delphi CarlosHernandez Tablas planas 5 17-06-2011 19:27:09
Aplicación Web vs aplicación Delphi epuigdef Internet 26 08-05-2007 11:47:12
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 23:44:51
Aplicación en Delphi silviodp Varios 2 29-08-2006 16:58:02
Cambiando aplicación de Delphi 5 a Delphi 2005 socger Varios 3 22-11-2005 17:15:32


La franja horaria es GMT +2. Ahora son las 03:40:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi