Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#1

TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)

  Alt 31. Jul 2024, 09:16
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?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (31. Jul 2024 um 09:31 Uhr)
  Mit Zitat antworten Zitat