Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   JSON String to Object mit factory (https://www.delphipraxis.net/198870-json-string-object-mit-factory.html)

TigerLilly 6. Dez 2018 15:17

JSON String to Object mit factory
 
Ärgerlich. Ich habe beim Recherchieren einen Artikel gelesen, in dem (mit Code) beschrieben wurde, wie aus einem JSON String, der Daten für unterschiedliche Objekte enthält, mittels einer Factory die Klassen erzeugt werden. Jetzt finde ich den Artikel nicht mehr. :-(

Der Trick war wohl, den Klassennamen in das JSON mit aufzunehmen und für die Klassenerzeugung zu nutzen. So konnten sehr elegant auch verschachtelte Klassen in einem Rutsch wiederhergestellt werden.
Kennt jemand zufällig den Link/Artikel?

Danke im Voraus. :thumb:

TiGü 6. Dez 2018 19:38

AW: JSON String to Object mit factory
 
Zitat:

Zitat von TigerLilly (Beitrag 14202)
Kennt jemand zufällig den Link/Artikel?

Danke im Voraus. :thumb:

Was meint denn dein Browserverlauf dazu?

TigerLilly 6. Dez 2018 20:00

AW: JSON String to Object mit factory
 
:shock: Browserverlauf? Wasn das?

Nein, so einfach ist es leider nicht. Ist ein paar Tage her + mein Browserverlauf ist ein Verlauf, soll heißen, da verlaufen sich alle Spuren.

sh17 11. Dez 2018 08:54

AW: JSON String to Object mit factory
 
Deutsch oder Englisch? Schon mal google mit diversen Fragen bemüht? "JSON Delphi instantiate class name"

Dennis07 11. Dez 2018 09:48

AW: JSON String to Object mit factory
 
Da JS Ducktyped ist, also du überhaupt keine "Klassen" im ängeren Sinne hast, geht das leider nicht so ohne weiteres. Du müsstest halt vorher genau definieren, bei welchem Property-Set welche Klasse benutzt werden soll. Diese musst du vorher dann registrieren. Delphi erlaubt kein Erzeugen anonymer Klassen zur Laufzeit (zumindest nicht so einfach). Das Mappen einer JSON auf ein Klassenobjekt hingegen ist aber denkbar einfach: Entweder du benutzt JsonToObject (falls das so hieß, kann auch sein dass ich den Namen jetzt nicht mehr genau im Kopf hab), oder du iterierst das selber, mit einem der unzähligen JSON-Parsern/Lexern, die Delphi hat oder die es im Internet gibt.

Schokohase 11. Dez 2018 10:03

AW: JSON String to Object mit factory
 
Das Zauberwort ist polymorphic und damit lässt sich dann für Delphi das finden

GRIJJY Blog: Efficient and easy-to-use JSON and BSON library (sieht Abschnitt Polymorphism)
Delphi-Quellcode:
var
  Dog: TDog;
  Animal, Rehydrated: TAnimal;
  Json: String;
begin
  Dog.Weight := 30;
  Dog.FurColor := 'Blond';
  Animal := Dog;
  TgoBsonSerializer.Serialize(Animal, Json); // Result:
  // { "_t" : "TDog", "Weight" : 30.0, "FurColor" : "Blond" }

  TgoBsonSerializer.Deserialize(Json, Rehydrated);
  // This will actually create a TDog instance (instead of TAnimal)
end;

TigerLilly 11. Dez 2018 11:37

AW: JSON String to Object mit factory
 
Danke für die vielen Hinweise, aber das war´s leider nicht. :- (

Aber kein Problem, ich weiß ungefähr worum´s ging + das ist das wichtigste. Danke trotzdem. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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