AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Serialisierung von Objekten

Ein Thema von lowmax_5 · begonnen am 5. Sep 2018 · letzter Beitrag vom 6. Sep 2018
Antwort Antwort
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
246 Beiträge
 
Delphi 10.3 Rio
 
#1

Serialisierung von Objekten

  Alt 5. Sep 2018, 09:02
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!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.787 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Serialisierung von Objekten

  Alt 5. Sep 2018, 09:15
Moin...
..weil bald Weihnachten ist.

Aus dem Fundus. TAdress rein...und nach dem Cast auf TAdress wieder TAdress wieder raus...
Angehängte Dateien
Dateityp: pas Tools.Json.pas (1,9 KB, 42x aufgerufen)
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
246 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Serialisierung von Objekten

  Alt 5. Sep 2018, 11:40
Vielen Dank, mit dem cast geht es also. Was wäre dann mit Records?
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Serialisierung von Objekten

  Alt 6. Sep 2018, 13:19
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?
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
246 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Serialisierung von Objekten

  Alt 6. Sep 2018, 13:44
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...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 08:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf