As per several QC reports, Data.DBXJSON.TJSONString.ToString
is still very broken. Which means, for all intents and purposes, TJSONAnything.ToString
is also broken. Fortunately, you can just use TJSONAnything.ToBytes
for a happy JSON outcome.
The following function will take any Delphi JSON object and convert it to a string:
function JSONToString(obj: TJSONAncestor): string; var bytes: TBytes; len: Integer; begin SetLength(bytes, obj.EstimatedByteSize); len := obj.ToBytes(bytes, 0); Result := TEncoding.ANSI.GetString(bytes, 0, len); end;
Because TJSONString.ToBytes
escapes all characters outside U+0020-U+007F, we can assume that the end result is 7-bit clean, so we can use TEncoding.ANSI
. You could instead stream the TBytes to a file or do other groovy things with it.