Folgender (Test-)Quellcode:
Delphi-Quellcode:
procedure TFormBeautifyTest.BitBtn1Click(Sender: TObject);
var
lJSONValue: TJSONValue;
lJsonString:
String;
lJsonPair: TJsonPair;
begin
lJsonString := '
{"object": "value","test/html": "http://url"}';
lJSONValue := TJSONObject.ParseJSONValue(lJsonString, true, true);
try
MemoDest.Lines.Text := lJSONValue.Format(2);
//MemoDest.Lines.Text := lJSONValue.tostring; // <- hier gibt es auch den Fehler. Nur unformatiert.
// Mal den Inhalt der JSON-Objekte testen. Hier ist der Wert korrekt.
lJsonPair := TJSONObject(lJSONValue).Pairs[1];
MemoDest.Lines.add('
');
MemoDest.Lines.add(lJsonPair.JsonString.Value);
MemoDest.Lines.add(lJsonPair.JsonValue.Value);
finally
lJSONValue.Free;
end;
end;
Eigentlich erwarte ich folgenden output:
Code:
{
"object": "value",
"test/
html": "http://
url"
}
test/
html
http://
url
Tatsächlich werden die Slashes mit einem Backslash escaped. Ist aber in einem JSON-Text nicht vorgesehen/notwendig.
Code:
{
"object": "value",
"test\/
html": "http:\/\/
url"
}
test/
html
http://
url
Bin mir nicht sicher, aber mich meine es war in Delphi 11 nicht so.
Oder habe ich irgendetwas übersehen? Gibt es ein Property, welches die Escape-Zeichen unterdrückt?