Da kann man allerdings was machen, wenn man ein passendes
JsonReflectAttribute und einen
TJSONInterceptor dafür schreibt.
Delphi-Quellcode:
interface
uses
REST.JsonReflect;
type
JsonMyDateAttribute = class(JsonReflectAttribute)
public
constructor Create;
end;
implementation
uses
System.Rtti, System.SysUtils;
type
TMyDateTimeInterceptor = class(TJSONInterceptor)
protected
procedure StringReverter(Data: TObject; Field, Arg: string); override;
end;
procedure TMyDateTimeInterceptor.StringReverter(Data: TObject; Field, Arg: string);
var
ctx: TRTTIContext;
datetime: TDateTime;
begin
datetime := StrToDateTime(Arg);
ctx.GetType(Data.ClassType).GetField(Field).SetValue(Data, datetime);
end;
constructor JsonMyDateAttribute.Create;
begin
inherited Create(ctObject, rtString, TMyDateTimeInterceptor);
end;
Unter der Annahme, daß deine Klasse in etwa so aussieht, musst du das entsprechende Feld mit dem Attribut dekorieren.
Delphi-Quellcode:
type
TMyObject = class
private
FFertigbis: string;
FAnzahl: Integer;
FNummer: Integer;
[JsonMyDate]
FAenderung: TDateTime;
public
constructor Create;
end;
Eine ganz ähnliche Technik wird auch in diesem Artikel beschrieben:
Serializing Objects with TJson