2015-10-14 100 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