Ich benutze dafür TJSONMarshal, das funktioniert vor und nach Rio:
Delphi-Quellcode:
function TJson_Marshal_Base<T>.DoMarshal(const AMar : TJSONMarshal) : String;
var
LValue: TJSONValue;
begin
LValue := AMar.Marshal( Self );
try
Result := LValue.ToString;
finally
LValue.Free; // New: LValue temp. obj. must be freed
end;
end;
function TJson_Marshal_Base<T>.Internal_ToString : String;
var
LMar : TJSONMarshal;
begin
LMar := TJSONMarshal.Create(TJSONConverter.Create, True);
try
Result := DoMarshal( LMar ); // To Avoid uncaught exceptions
finally
LMar.Free;
end;
end;
Rollo