Ver la Versión Completa : Crear TObject desde un JSON
GerTorresM
19-06-2018, 02:30:26
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 :cool:
Neftali [Germán.Estévez]
19-06-2018, 12:12:06
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:
{
"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:
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<TMarcadoresClass>;
public
property marcadores: TArray<TMarcadoresClass> 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<TMarcadoresClass>(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<TRootClass>(AJsonString)
end;
end.
Utilizando esta unit, basta con una línea (método de clase) para traducir el jSON en un objeto Delphi.
class function FromJsonString(AJsonString: string): TMarcadoresClass;
rastafarey
14-07-2018, 21:31:45
https://github.com/rilyu/json4delphi alli tienes eso.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.