AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi deserialize JSON und TDateTime

Ein Thema von Nebilim · begonnen am 31. Mär 2020 · letzter Beitrag vom 1. Apr 2020
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi deserialize JSON und TDateTime

  Alt 31. Mär 2020, 08:07
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
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz