![]() |
TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)
Folgender (Test-)Quellcode:
Delphi-Quellcode:
Eigentlich erwarte ich folgenden output:
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;
Code:
Tatsächlich werden die Slashes mit einem Backslash escaped. Ist aber in einem JSON-Text nicht vorgesehen/notwendig.
{
"object": "value", "test/html": "http://url" } test/html http://url
Code:
Bin mir nicht sicher, aber mich meine es war in Delphi 11 nicht so.
{
"object": "value", "test\/html": "http:\/\/url" } test/html http://url Oder habe ich irgendetwas übersehen? Gibt es ein Property, welches die Escape-Zeichen unterdrückt? |
AW: TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)
Laut Definition ist es aber vorgesehn und vollkommen korrekt, wenn es so gemacht wird,
auch wenn Viele (inkl. mir) es nicht für notwendig erachten mögen. Inzwischen wurde JSON auch in einige Standards aufgenommen. RFC 8259 und ECMA-404 Wenn man sie streng ganz genau nimmt, dann steht dort, dass dieses Zeichen escaped werden "muß", aber es ist auch erlaubt, dass es beim Dekodieren auch unescaped sein darf. :stupid: Hast du mal in die Optionen geschaut, ob es dagegen was gibt? [add] TJSONOutputOptions sagt nö |
AW: TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)
Zitat:
![]() Lesbarer ist es aber dennoch ohne Escapezeichen. Vielleicht gibt es irgendwann mal ein Property in TJSONValue, bei dem man Escape beim Forewardslash abschalten kann. Edit: Witzigerweise werden im rfc8259 die examples ohne den Escapezeichen angegeben ;-) : ![]() EditEdit: Allerdings steht im RFC auch folgendes Zitat:
|
AW: TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)
Ich habe da mal ein neues Feature angefragt.
![]() Schade, dass man nicht mehr abstimmen kann :-( |
AW: TJSONValue.Format fügt Escapezeichen ein. (Neu in Delphi 12?)
Unübersichtlich, die Suche ist ein Grauß und vieles fehlt. :thumb:
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz