AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

JSON String to Object mit factory

Ein Thema von TigerLilly · begonnen am 6. Dez 2018 · letzter Beitrag vom 11. Dez 2018
Antwort Antwort
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#1

JSON String to Object mit factory

  Alt 6. Dez 2018, 15:17
Ä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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: JSON String to Object mit factory

  Alt 6. Dez 2018, 19:38
Kennt jemand zufällig den Link/Artikel?

Danke im Voraus.
Was meint denn dein Browserverlauf dazu?
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: JSON String to Object mit factory

  Alt 6. Dez 2018, 20:00
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.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: JSON String to Object mit factory

  Alt 11. Dez 2018, 08:54
Deutsch oder Englisch? Schon mal google mit diversen Fragen bemüht? "JSON Delphi instantiate class name"
Sven Harazim
--
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
481 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: JSON String to Object mit factory

  Alt 11. Dez 2018, 09:48
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.
Dennis
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: JSON String to Object mit factory

  Alt 11. Dez 2018, 10:03
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;
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: JSON String to Object mit factory

  Alt 11. Dez 2018, 11:37
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.
  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 +1. Es ist jetzt 09:48 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