Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi JSon Formatieren (https://www.delphipraxis.net/195387-json-formatieren.html)

sh17 19. Jul 2018 10:58

AW: JSon Formatieren
 
Ich kram es nochmal raus.

Wie kann ich mit Delphi Tokyo Bordmitteln einen JSON-String formatieren und de-formatieren (alle Whitespaces etc wieder entfernen)?

TJson.JsonToObject kommt nämlich nur mit unformatieren Daten zurecht. Ich möchte den JSON-String aber dem Benutzer zum Bearbeiten anbieten, was nur formatiert Sinn macht.

TiGü 19. Jul 2018 12:34

AW: JSon Formatieren
 
Zitat:

Zitat von sh17 (Beitrag 1407868)
Ich kram es nochmal raus.

Wie kann ich mit Delphi Tokyo Bordmitteln einen JSON-String formatieren und de-formatieren (alle Whitespaces etc wieder entfernen)?

TJson.JsonToObject kommt nämlich nur mit unformatieren Daten zurecht. Ich möchte den JSON-String aber dem Benutzer zum Bearbeiten anbieten, was nur formatiert Sinn macht.

Delphi-Quellcode:
 
var
 MyJSONString, MyFormattedJSONString: string;
 JsonValue: TJSONValue;
begin
...

      MyJSONString := RESTResponse.Content;
      Memo1.Lines.Add(MyJSONString);
      JsonValue := TJSONObject.ParseJSONValue(MyJSONString);
      if Assigned(JsonValue) then
      begin
        MyFormattedJSONString := REST.Json.TJSON.Format(JsonValue);
        Memo1.Lines.Add(MyFormattedJSONString);
...
        // und wieder zurück
        MyJSONString := MyFormattedJSONString.Replace(sLineBreak, '').Replace(' ', '');
        Memo1.Lines.Add(MyJSONString);
      end;

hemmingway 28. Okt 2021 10:56

AW: JSon Formatieren
 
Für die formatierte Ausgabe mit Bordmitteln geht auch folgendes:

var Export := TExport.Create; // Das zu exportierende Object
var m := TJSONMarshal.Create(TJSONConverter.Create);
var SerializedExport := m.Marshal(Export) as TJSONObject;
var JSONString := SerializedExport.ToString;
SerializedExport.Free;

JSONString := StringReplace(JSONString, '\\', '', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '"{', '{', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '\"', '"', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '\{', '{', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '}"', '}', [rfReplaceAll]);

var memo := TStringList.Create;
memo.Text := JSONString;
memo.savetofile('d:\temp\export.json');
memo.free;
Export.Free;

Mit einem Viewer (z.B. den JSON Viewer von MITEC) lassen sich so auch komplexere Strukturen anzeigen.
Das ganze geht aber nur, wenn die ersetzten Strings nicht in den Daten vorhanden sind. Ein direktes Wiedereinlesen mit Unmarshal von TJSONObject ist nicht möglich.

Viele Grüße, Bernhard

hemmingway 4. Nov 2021 09:17

AW: JSon Formatieren
 
for var i := 1 to JSONString.Length do
begin
if JSONString[i] = '\' then
begin
if (JSONString[i+1] <> '\') and (JSONString[i+1] <> '"') then
JSONString[i] := #1;
end;
end;
JSONString := StringReplace(JSONString, '\', '', [rfReplaceAll]);
JSONString := StringReplace(JSONString, #1, '\\', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '"{', '{', [rfReplaceAll]);
JSONString := StringReplace(JSONString, '}"', '}', [rfReplaceAll]);

Mit dieser Variante kann man ein einzelnes \ in Pfadangaben retten.

Viele Grüße, Bernhard

venice2 4. Nov 2021 09:45

AW: JSon Formatieren
 
Das Thema ist schon seit 3 Jahren erledigt.
Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz