2015-10-14 104 views
3

漂亮打印JSON我有一台服务器上的多个JSON-文件,它只能运行批处理脚本或命令行工具。所有的JSON文件格式都不正确,这意味着在行首没有制表符空格。Windows批处理 - 每个脚本

有没有一种方法,写一个批处理脚本或运行一个命令行工具来格式化文件,所以他们恢复正常?

回答

5

你肯定会需要一个外部工具。我使用的是command-line JSON processor jq - 只是传递一个空过滤器,它会打印出它作为输入提供的JSON。

例子:

ECHO "{ \"att1\": 1, \"att2\": 2 }" | jq "" 

输出:

{ 
    "att1": 1, 
    "att2": 2 
} 
+1

过滤器'.'的'jq'文档中建议,它也确实隐含了美化。这个选项在Windows命令行中更容易提供。 – Wolf

+0

这不起作用。同样,对于更大的文件大小,jq只是崩溃。 – Delfic

+0

@Deflic:请提供信息,哪些不起作用,即开放问题并提供必要的信息供我们复制。这个答案在这里被接受是一个强有力的指标,该方法确实有效。 – zb226

0

超级快速的方法来做到这一点,如果你已经安装了Python是通过键入命令提示符或PowerShell的以下内容:

type dirty.json | python -m json.tool > pretty.json 

其中dirty.json已经过压缩或无法读取JSON和pretty.json是一个漂亮的。你甚至可以把它放在一个批处理文件中,通过传递一个参数来运行它。它的处理速度非常快。

说明:所以它被发送到Python的模块json.tool然后“>”写输出到一个名为“pretty.json”文件 类型写入文件的内容到控制台,但它的管道。在没有> pretty.json的情况下尝试查看控制台中的输出。

+0

这并不而可靠地工作['jq'确实](https://stackoverflow.com/a/33123564/2932052)。处理Pandoc输出时失败。在第一行中,我观察到数据丢失。因此,如果您只想格式化JSON,则此建议**适得其反**。 – Wolf

+0

您有没有尝试过格式化输出的例子?我不认为我提到的方法会导致数据丢失。 – dnafication

+0

我通过Pandoc将Markdown文档转换为JSON。重新格式化时,python json.tool删除了Pandoc元数据。 – Wolf