漂亮的 ConfigObject 打印?

Jul*_*éon 5 java formatting groovy configuration-files

我有这个 groovy 程序,它使用 ConfigObject 创建一个 groovy 配置文件。设置 ConfigObject 后,将使用以下命令将其写入文件:

myFile.withWriter {writer -> myConfigObject.writeTo(writer)}
Run Code Online (Sandbox Code Playgroud)

这导致 ConfigObject 的每个属性都写在一行上。例如,地图将打印为:

graphs=[["type":"std", "host":"localhost", "name":"cpurawlinux"], ["type":"std", "host":"localhost", "name":"memory"], ["type":"std", "host":"localhost", "name":"udp"] ... ]
Run Code Online (Sandbox Code Playgroud)

如果有人必须看的话,这是非常难以阅读的。有没有办法获得更友好的输出?像这样的东西会很棒:

graphs=[
    ["type":"std", "host":"localhost", "name":"cpurawlinux"],
    ["type":"std", "host":"localhost", "name":"memory"],
    ["type":"std", "host":"localhost", "name":"udp"]
    ...
]
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建自己的writeTo,但是 Groovy 中不是已经有这样的东西了吗?

tim*_*tes 1

不幸的是,您需要writeTo按照您所说的那样编写自己的内容。

如果您有一个结构如下的配置文件:

graphs {
  a=["type":"std", "host":"localhost", "name":"cpurawlinux"]
  b=["type":"std", "host":"localhost", "name":"memory"]
}
Run Code Online (Sandbox Code Playgroud)

然后 writeTo 会用结构将其写出,但如果您的配置文件只是一个大的旧列表,它会将其写为一个大的旧列表