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. |
AW: JSon Formatieren
Zitat:
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; |
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 |
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 |
AW: JSon Formatieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr. |
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