![]() |
Deserialisierung eines Json-Strings
Hallo!
Ich bin auf der Suche nach einer eleganten Lösung, wie ich beliebige Json-Strings in Klassen deserialisieren kann. Unten ein Beispiel, wie ich es z.Z. löse. Leider muss dann jede Klasse die FillFromJson Methode haben. Gibt es nicht via Spring4D Möglichkeiten, das zu automatisieren?
Delphi-Quellcode:
type
TRequest = class Code : integer; Message : string; procedure FillFromJson(Json: string); end; procedure TRequest.FillFromJson(Json: string); var JsonObject : TlkJSONObject; begin if Json='' then exit; JsonObject := TlkJSON.ParseText(Json) as TlkJSONobject; if not Assigned(JsonObject) then exit; try Code := StrToIntDef(GetFieldValueAsString('Code'), 0); Message := GetFieldValueAsString('Message'); finally JsonObject.Free; end; end; |
AW: Deserialisierung eines Json-Strings
Was möchtest du erreichen? Bestehende Klassendefinitionen benutzen und mit den Daten füllen? Dazu findest du z.B. hier etwas:
![]() |
AW: Deserialisierung eines Json-Strings
Zitat:
Codebeispiele: ![]() ![]() Habe damit aber noch nicht selber gearbeitet. |
AW: Deserialisierung eines Json-Strings
|
AW: Deserialisierung eines Json-Strings
Und dabei ganz besonders den Kommentar von Herrn Monien beachten. Dazu auch mein passendes Thema:
![]() |
AW: Deserialisierung eines Json-Strings
ich muss wohl noch dazu sagen, dass ich in XE2 unterwegs bin.
REST.JSON Unit ist somit leider für mich aus dem Rennen :-( Aber genau sowas suche ich! SuperObject klingt auch ganz passend, das werde ich mal testen. Wenn jemand weitere sachdienlich Hinweise geben kann, immer gerne her damit :-D |
AW: Deserialisierung eines Json-Strings
Das von mir eingangs gepostete Marshalling funktioniert ab Delphi 2010. ;-)
Das nutzen wir auch. |
AW: Deserialisierung eines Json-Strings
Hört sich auch top an. Wird ausprobiert.
|
AW: Deserialisierung eines Json-Strings
ich habe ein Problem beim UnMarshal.
das TJSONUnMarshal.UnMarshal erwartet einen Json inkl "type" und "id". Type ist soweit kein Problem. Aber woher kriege ich eine ID ? Wenn ich ein Objekt erzeuge und daraus einen String generiere, sieht es so aus: {"type":"UnitRequest.TRequest","id":1,"fields":{"M essage":"Hier ein Text","Code":401}}Mache ich daraus wieder ein Objekt, funktioniert es wunderbar. Nur bekomme ich aus dem Fremdsystem nur folgenden String: {"Message":"Hier ein Text","Code":401}Setze ich type/id/fields manuel drum herum, knallt es bei mir. Kann mir jemand auf die Sprünge helfen ? Danke!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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 by Thomas Breitkreuz