Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Serialisierung von Objekten (https://www.delphipraxis.net/197790-serialisierung-von-objekten.html)

lowmax_5 5. Sep 2018 08:02

Serialisierung von Objekten
 
Hallo,

folgende Objektstruktur ist gegeben, die ich nun nach Json serialisieren möchte:

Code:
uses JSON, DBXJSON, DBXJSONReflect;

type

  TAdress = Class
    Name: String;
    Vorname: String;
    GebDat: TDate;
  end;

  TMyClass = class

    MyVar: Integer;
    MyVarStr: String;
  private
    FAdress: TAdress;
    FMyProperty1: Integer;
    FMyProperty2: String;
    procedure SetMyProperty1(const Value: Integer);

    procedure MyProcedure;
    function MyFunction: Boolean;
    procedure SetMyProperty2(const Value: String);
  public
    Constructor Create;
    destructor destroy;
    property MyProperty1: Integer read FMyProperty1 write SetMyProperty1;
    property MyProperty2: String read FMyProperty2 write SetMyProperty2;
    function getJson: String;
  end;
Mit
Code:
function TMyClass.getJson: String;
var
 LMar : TJSONMarshal;
 jo :TJSONObject;
begin
  LMar := TJSONMarshal.Create();
  try
  Result := LMar.Marshal(self).ToString; //gesamte Object
   finally
  LMar.Free;
  end;
serialisiere ich das vollständige Objekt. Das funktioniert so weit gut.

Ich möchte jedoch nur das Objekt FAdress:TAdress serialisieren.
Mit Result := LMar.Marshal(self.FAdress).ToString; //gesamte Object komme ich hier jedoch nicht weiter. Wie lässt sich das am besten lösen?

Kann man weiterhin Records (TAdress = Record) serialisieren? Wie wäre dieses dann möglich?

Für Tipps bedanke ich mich vorab!

haentschman 5. Sep 2018 08:15

AW: Serialisierung von Objekten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P
..weil bald Weihnachten ist. 8-)

Aus dem Fundus. :zwinker: TAdress rein...und nach dem Cast auf TAdress wieder TAdress wieder raus...

lowmax_5 5. Sep 2018 10:40

AW: Serialisierung von Objekten
 
Vielen Dank, mit dem cast geht es also. Was wäre dann mit Records?

Scurra 6. Sep 2018 12:19

AW: Serialisierung von Objekten
 
Zitat:

Vielen Dank, mit dem cast geht es also. Was wäre dann mit Records?
In der Delphi-Hilfe habe ich gefunden, dass man sich dazu benutzerdefinierte Konverter registrieren muss. In folgendem Link gibt es auch ein Beispiel mit einem Record:
http://docwiki.embarcadero.com/RADSt...g_User_Objects

Ob man auch nur ein Record, das nicht in einer Klasse verpackt ist, serialisieren kann, weiß ich nicht. Zumindest erwartet die Marshalling-Klasse ein Objekt als Parameter. Ich denke aber, dass es dir genau darum geht, oder?

lowmax_5 6. Sep 2018 12:44

AW: Serialisierung von Objekten
 
Ja den Link zu den benutzerdefinierten Konverter hatte ich bereits gefunden.

Wenn ein Record in eine Klasse gepackt ist, funktioniert es auch. (Wird als Array serialisiert).
Ich hatte jedoch keine Möglichkeit gefunden direkt einen Record zu serialisieren, hatte hier nur die Erwartungshaltung, dass es dann auch gehen sollte...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz