Zitat:
Hat das Objekt ein "Assign", oder wie genau?
Normal macht man das klassisch mit Assign. Meine "Datenobjekte" haben auch Listen mit Objekten. Deshalb benutze ich gern folgendes:
Delphi-Quellcode:
class function TToolsJson.ObjectCopyJson(Value: TObject): TObject;
var
MarshalObj: TJSONMarshal;
UnMarshalObj: TJSONUnMarshal;
JSONValue: TJSONValue;
begin
Result := nil;
MarshalObj := TJSONMarshal.Create;
try
UnMarshalObj := TJSONUnMarshal.Create;
try
JSONValue := MarshalObj.Marshal(Value);
try
if Assigned(JSONValue) then
Result := UnMarshalObj.Unmarshal(JSONValue);
finally
JSONValue.Free;
end;
finally
UnMarshalObj.Free;
end;
finally
MarshalObj.Free;
end;
end;
...nur leider funktioniert das nicht immer.
Wie man an dem o.g. Fehler erkennen kann, werden Dictioniaries nicht wieder richtig erzeugt. Ich habe deshalb wieder nur auf Liste umgestellt.