Hmm..
Es geht doch nur darum, einen JSON-Text (String) so zu formatieren, dass er lesbar eingerückt und umgebrochen wird?
Hab das mal eben recht einfach als eine simple Funktion erstellt:
Delphi-Quellcode:
function FormatJSONStr(AString : string):String;
var
idx : integer;
InStr : boolean;
i : integer;
begin
Result := '';
idx := 0;
InStr := false;
For i := 1 to length(AString) do begin
if not InStr then begin
if AString[i] in [']','}'] then begin
inc(idx, -1);
Result := Result + #13#10 + StringOfChar(#9 , idx);
end;
end;
Result := Result + AString[i];
if AString[i] = '"' then begin
if (i > 1) and (AString[i-1] <> '/') then InStr := not InStr;
end;
if not InStr then begin
if AString[i] in [','] then begin
Result := Result + #13#10 + StringOfChar(#9 , idx);
end;
if AString[i] in ['{','['] then begin
Inc(idx);
Result := Result + #13#10 + StringOfChar(#9 , idx);
end;
end;
end;
end;
Ist nicht schön, jedoch gibt es zumindestens mit deinen Beispielen etwas schön formatiertes heraus.
Es berücksichtigt auch, das die Sonderzeichen (,[]{}") auch in JSON-Strings vorhanden sein können.
Es wurde mit D6 erstellt, so dass für XE noch das 'String in []' gegen (ich glaube) CharInStr ausgetauscht werden sollte...
Hab kein XE und konnte es somit nicht probieren..