ich hatte gehofft dass du als Experte mein Thread liest.
Müsste das hier nicht wieder ein normales lesbares JASON erzeugen,
oder ist es normal dass das JASON immer noch Binär ist?
TFDJSONInterceptor.DataSetsToJSONObject(LDataSets, Result);
Ja, das ist normal!
TFDJSONInterceptor.DataSetsToJSONObject
läuft über
DataSetToJSONValue
und
DataSetToString
, was intern
TFDStorageFormat.sfBinary
verwendet. Insofern hast du damit also keine reelle Chance auf ein lesbares JSON.
Der gravierendste Nachteil ist dabei, daß sich das Binärformat mit jedem Delphi- bzw. FireDAC-Update ändern kann und damit die DataSets nicht mehr austauschbar sind. Bei JSON hat man wenigstens noch einen brauchbaren Ansatzpunkt.
Aber vielleicht helfen dir diese beiden Methoden weiter:
Delphi-Quellcode:
function DataSetToJSON(Source: TFDDataSet): string;
var
stream: TStringStream;
begin
stream := TStringStream.Create;
try
Source.SaveToStream(stream, TFDStorageFormat.sfJSON);
result := stream.ToString;
finally
stream.Free;
end;
end;
procedure JSONToDataSet(const Source: string; Target: TFDDataSet);
var
stream: TStringStream;
begin
stream := TStringStream.Create(Source);
try
Target.LoadFromStream(stream, TFDStorageFormat.sfJSON);
finally
stream.Free;
end;
end;
Wegen der ursprünglichen Fehlermeldung muss ich nochmal forschen, wenn ich etwas Zeit habe.