Aber da wird ja auch OwnsObjects, Listhelper mit in den JSONString geschrieben. Das möchte ich ja genau verhindern.
Ich möchte eine Instanz exportieren in einem allgemeinen JSONFormat damit auch ein anderer mit z.B. c# auch mit der Datei klar kommt.
Das ist ja auch genau der Hintergrund für die Interceptor-Klassen. Die wandeln nämlich die Listen in JSON-Arrays um und wieder zurück. Im wesentlichen tun
TJson.JsonToObject und
TJson.ObjectToJsonXXX ja auch nichts anderes als
Marshal und
CreateObject (
Unmarshal gibt es nur in
Data.DBXJSONReflect, die beißt sich aber mit
REST.JsonReflect) für die jeweils erzeugten Hilfsklassen aufzurufen (halt nur simpler zu benutzen). Kann man ganz gut in deren Implementierung nachschauen.
Oder gibt es auch eine Möglichkeit eine Klasse abzuleiten von ObjectList<T> wo der Interceptor dran und von der Klasse dann meine ObjectLists zu abzuleiten, damit die Struktur dann so aussieht:
TFirmaList.TFirma.TPersonList.TPerson
Man könnte einen Interceptor schreiben, der
TJson.ObjectToJsonString dazu bringt, aus einer TObjectList<T> ein Json-Array (fängt mit [ anstatt { an) zu machen. Die Rückwandlung des Json, was ja dann ein Json-Array ist, funktioniert aber nicht mit
TJson.JsonToObject, da das explizit ein
TJsonObject erwartet und kein
TJsonArray. Auch Data.DBXJSONReflect ist da ähnlich restriktiv.
Das wäre dann vielleicht mal was für eine Erweiterung der
REST.Json.Helpers Unit.