命令行输出在用于进一步处理时有什么好的格式?

Mic*_*ick 1 c# c++ delphi console

我在Delphi中编写了一个控制台应用程序,用于查询来自多个位置的信息.此应用程序将由另一个进程启动,并且启动过程将捕获到STDOUT的输出.

我正在检索的信息将由调用应用程序解释以用于报告目的.将此数据输出到STDOUT的最佳方法是什么,以便可以轻松解析?JSON?XML?CSV?具体而言,数据是远程工作站信息,因此它会像运行进程一样将事情拉回来,并详细说明每个进程.

有没有人对此或建议有任何经验?

Mas*_*ler 6

如果您想要一些易于解析的东西,特别是如果必须快速完成,请使用最简单的格式,以便有效地传达您需要的信息.如果可以,请使用CSV,否则请尝试使用JSON.绝对不是XML,除非你真的,出于某种原因真的需要所有额外的复杂性.

  • +1 - KISS的原则=总是使用你可以使用的最低通用格式,XML听起来不错,JSON非常便于携带 - 但如果选项卡或逗号分隔列表可以,它将执行:D (3认同)
  • XML的重点是标准XML库为您处理复杂性.因此,只有在符合我们需求的情况下才使用XML*和*您使用这些库来读取,编写,验证等等. (2认同)

Joh*_*mas 5

如果您的数据(看起来像)不包含该字符,我会选择Tab- delimited文件,因为它允许最快速和最简单的处理.所有其他格式都更慢,更复杂(即使它们给你更多的力量).

最接近的匹配是CSV,但如果项目包含CSV定义的某些特殊字符(空格,逗号,引号等),则CSV需要引用该项目.

由于上述原因,Tab限定格式是最紧凑的格式,因此它具有最大的线上速度.(因为你在谈论远程工作站,我认为你在某种网络上).

此外,值得一提的另一件事是Tab限定格式非常易读,因此如果需要,调试更容易.

顺便说一句,如果您的数据流中存在Tab字符,您可以选择另一个您确定不可能的字符.(例如#1等).当然,如果你的使用场景允许的话.

HTH