Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2018
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: Nov 2005
Ubicación: Tunja - Boyacá
Posts: 209
Poder: 14
GerTorresM Va por buen camino
Cool Crear TObject desde un JSON

Hola a tod@s

La situación propuesta es para que sea desarrollada en delphi 7 con postgres 9.4(inlcuye el manejo de datos tipo JSON) o superior

La duda que me asalta e día de hoy es las siguiente:

Quiero generar a partir de los datos manejados en un JSON un objeto en delphi, como ejemplo supogamos que guardo en un json todas los valores que deseo asignar a un objeto que creo en forma dinámica, asignado al objeto creado los valores guardados en el json.

para ejemplo profundizar el ejemplo ponga la siguiente situación:

Tenemos por una parte la cabecera de un reporte, dicha caberera puede llegar a variar con el paso del tiempo, entonces se almacena en la base de datos en formato JSON las especificaciones de la cabecera; las cuales se puden modificar en la base de datos afectando la presentación del reporte sin que implique efctuar cambios en el código del aplicativo.

Agradezco de antemano el tiempo y cualquier aporte




GerTorresM
Responder Con Cita
  #2  
Antiguo 19-06-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.730
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por GerTorresM Ver Mensaje
La duda que me asalta e día de hoy es las siguiente:

Quiero generar a partir de los datos manejados en un JSON un objeto en delphi, como ejemplo supogamos que guardo en un json todas los valores que deseo asignar a un objeto que creo en forma dinámica, asignado al objeto creado los valores guardados en el json.

Pues alguien ya pensó en esa posibilidad y además creó una herramienta para generar esas clases.
Por ejemplo, si tienes un JSON como este:

Código:
{
   "marcadores":[
      {
         "latitude":40.416875,
         "longitude":-3.703308,
         "city":"Madrid",
         "description":"Puerta del Sol"
      },
      {
         "latitude":40.417438,
         "longitude":-3.693363,
         "city":"Madrid",
         "description":"Paseo del Prado"
      },
      {
         "latitude":40.407015,
         "longitude":-3.691163,
         "city":"Madrid",
         "description":"Estación de Atocha"
      }
   ]
}

Puedes ir a la web https://jsontodelphi.com/ pegar el JSON y obtener la clase para trabajar con él.
Se te genera un código/unit como este:


Código Delphi [-]
unit RootUnit;

{*******************************************************************************
    Generated By   : JsonToDelphiClass - 0.65 
    Project link   : https://github.com/PKGeorgiev/Delphi-JsonToDelphiClass
    Generated On   : 2018-06-19 07:09:45

    Created By     : Petar Georgiev - (http://pgeorgiev.com) 
    Adapted Web By : Marlon Nardi - (http://jsontodelphi.com)
*******************************************************************************}

interface

uses Generics.Collections, Rest.Json;

type

TMarcadoresClass = class
private
  FCity: String;
  FDescription: String;
  FLatitude: Extended;
  FLongitude: Extended;
public
  property city: String read FCity write FCity;
  property description: String read FDescription write FDescription;
  property latitude: Extended read FLatitude write FLatitude;
  property longitude: Extended read FLongitude write FLongitude;
  function ToJsonString: string;
  class function FromJsonString(AJsonString: string): TMarcadoresClass;
end;

TRootClass = class
private
  FMarcadores: TArray;
public
  property marcadores: TArray read FMarcadores write FMarcadores;
  destructor Destroy; override;
  function ToJsonString: string;
  class function FromJsonString(AJsonString: string): TRootClass;
end;

implementation

{TMarcadoresClass}


function TMarcadoresClass.ToJsonString: string;
begin
  result := TJson.ObjectToJsonString(self);
end;

class function TMarcadoresClass.FromJsonString(AJsonString: string): TMarcadoresClass;
begin
  result := TJson.JsonToObject(AJsonString)
end;

{TRootClass}

destructor TRootClass.Destroy;
var
  LmarcadoresItem: TMarcadoresClass;
begin

 for LmarcadoresItem in FMarcadores do
   LmarcadoresItem.Free;

  inherited;
end;

function TRootClass.ToJsonString: string;
begin
  result := TJson.ObjectToJsonString(self);
end;

class function TRootClass.FromJsonString(AJsonString: string): TRootClass;
begin
  result := TJson.JsonToObject(AJsonString)
end;

end.


Utilizando esta unit, basta con una línea (método de clase) para traducir el jSON en un objeto Delphi.


Código Delphi [-]
  class function FromJsonString(AJsonString: string): TMarcadoresClass;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-07-2018
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: Nov 2003
Posts: 927
Poder: 15
rastafarey Va por buen camino
Resp

https://github.com/rilyu/json4delphi alli tienes eso.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta


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
Uso de TObject en un TStringList Angel.Matilla C++ Builder 4 07-03-2018 19:16:06
Crear estructura en Json lbidi Varios 1 01-06-2015 19:00:14
Como crear un objeto json lbidi Varios 3 14-05-2015 16:22:52
Como consumir Rest Service que retorna cadena en formato JSON desde delphi 7 JuanPa1 Internet 0 20-12-2013 19:07:20
Como deserializar array JSON desde C++ Builder? DSK25 C++ Builder 1 17-02-2013 23:51:20


La franja horaria es GMT +2. Ahora son las 20:14:19.


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