json - 如何在 Delphi 中漂亮地打印 JSON?

我正在寻找一个函数,该函数将 JSON 字符串作为输入并使用换行符和缩进(制表符)对其进行格式化。

示例: 我有输入线:

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

并希望得到一个可读的文本结果:

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

我找到了很多 PHP 和 C# 的示例,但不是 Delphi。 有人可以帮忙实现这样的功能吗?

更新 - 使用 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;

最佳答案

如果您不想使用任何外部库,并且您使用的是 delphi XE5 或更新版本,那么 REST 中有一个非常方便的 TJson.Format() 函数。 Json 单位。

uses json, REST.Json;

{ ... }    

function FormatJSON(json: String): String;
var
  tmpJson: TJsonObject;
begin
  tmpJson := TJSONObject.ParseJSONValue(json);
  Result := TJson.Format(tmpJson);

  FreeAndNil(tmpJson);
end;

https://stackoverflow.com/questions/18511333/

相关文章:

vba - 更改单元格中某些字符的颜色

c# - .NET 有免费的 SQL 格式化库吗?

python - 均匀地并排打印 2 个均匀填充的列表

go - 格式错误。新

regex - Powershell Parsing Help - 如何将文件夹名称列表输出到文本文

delphi - 如何格式化 DBGrid 列以显示两个小数位?

c# - 如何在 c# 中将 Decimal 格式化为程序控制的小数位数?

javascript - moment.js - 更改已格式化的过去日期的格式

java - 如何用空格左填充整数?

.net - 格式化 json 文档