以"漂亮"(缩进)的格式打印JSON

3
如果我创建一个 JSON 对象并将其打印到控制台上:
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hello'), TJSONString.Create('World')));
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Ciao'), TJSONString.Create('Mondo')));
Writeln(LJSONObject.ToString);

结果是:

{"Hello":"World", "Ciao":"Mondo"}

我该如何以更好的缩进方式打印结果,像这样呢?
{
   "Hello":"World",
   "Ciao":"MOndo"
}

目前 TJSONObject 不支持漂亮打印。但是,通过 this question 中的 PrettyPrintJSON 函数,您可以编写类似 like this 的内容。 - TLama
这里的缩进并不是“正确的” - 在 JSON 解析器中,缩进并不重要。但对于人类读取有用。这使得它像 @David Heffernan 在下面的答案中所称的那样是“漂亮打印”,或类似的东西。 - David
如果您不介意复制粘贴,您也可以使用在线工具,例如http://jsonprettyprint.net。 - Javaaaa
2个回答

5

4
自 Delphi XE5 起,有一个格式化程序 REST.Json.TJson.Format - Sir Rufo
那非常有帮助,对我来说确实很难找到。谢谢! - Robbie Matthews

2

正如Sir Rufo所指出的那样,自XE5以来就有一个内置选项。

uses REST.JSON,System.JSON;
...
function PrettyJSON(jsonstring:String):String;
    var jdoc:TJSONObject;
begin
    jdoc:=TJSONObject.ParseJSONValue(jsonstring) as TJSONObject;
    result:=TJSON.Format(jdoc)
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接