Wie kann ich JSON in Delphi schön drucken?

Ich suche eine Funktion, die eine Zeichenfolge von JSON als Eingabe nimmt und sie mit Zeilenumbrüchen und Einrückungen (Tabulatoren) formatiert.

Beispiel: Ich habe Eingabezeile:

{"menu": {"header": "JSON viewer", "items": [{"id": "Delphi"},{"id": "Pascal", "label": "Nice tree format"}, null]}}

Und möchten ein lesbares Ergebnis als Text erhalten:

{
   "menu":{
      "header":"JSON viewer",
      "items":[
       {
         "id":"Delphi"
       },
       {
         "id":"Pascal",
         "label":"Nice tree format"
       },
       null
      ]
   }
}

Ich habe viele Beispiele für PHP und C # gefunden, aber nicht für Delphi. Könnte jemand bei einer solchen Funktion helfen?

Update - Lösung mit SuperObject:

function FormatJson (InString: WideString): string; // Input string is "InString"
var
  Json : ISuperObject;
begin
  Json := TSuperObject.ParseString(PWideChar(InString), True);
  Result := Json.AsJson(true, false); //Here comes your result: pretty-print JSON
end;

Antworten auf die Frage(4)

Ihre Antwort auf die Frage