格式化JSON輸出 - Spectre Console系列
Spectre Console 是一個.NET程式庫,可讓您構建豐富、多彩的控制台應用程式。 您可以使用Spectre的面板、表格,甚至JSON格式來美化數據輸出,而不是單純的文字輸出。
在這篇文章中,我們將詳細了解Tim Corey的影片"Formatting JSON Output – Spectre Console Series"中展示的Spectre Console JSON。我們將探討他的代碼、NuGet包安裝以及樣式提示。 您將看到如何使用清晰的語法高亮和易於閱讀的佈局為您的控制台應用程式提供"JSON超能力"。 標題中的所有時間標記均對應於Tim的影片,這樣您可以隨時跟進。
入門:什麼是Spectre Console JSON
在0:00,Tim介紹了Spectre Console是用於創建視覺上吸引人的控制台應用程式的.NET程式庫。 他解釋說,在本課程中,他將從API獲取JSON數據,並使用Spectre Console JSON來顯示這些數據。 這意味著您的原始JSON字符串可以轉換為Spectre可呈現的豐富對象。
他提到源代碼和專案網站連結在描述中,因此您可以自行下載項目。
使用輔助函數獲取JSON數據
在0:35,Tim展示了輔助代碼。 在他的項目中,他有一個名為FetchApiDataAsync的Helpers類。 該函數向URL發送請求,獲取JSON,並將響應作為字符串返回。
他指出,您可以簡單地使用AnsiConsole.WriteLine(jsonResponse)將JSON寫入控制台。 但正如他在1:26所演示的那樣,該原始輸出只是一個密集的文本集合,對於閱讀或處理它的人不太友好。
安裝Spectre Console JSON套件
在1:46,Tim表示他希望正確格式化JSON。 但首先,他需要JSON擴展包。 他右鍵單擊項目,選擇"管理NuGet包",然後安裝Spectre.Console.Json。
他指出,您也可以使用CLI運行:
dotnet add package Spectre.Console.Json
dotnet add package Spectre.Console.Json
這是用於JSON渲染的官方NuGet包。 如Tim在2:14所解釋,您可以使用Spectre和package Spectre.Console.Json創建一個AOT(提前編譯)編譯的應用程式,但目前不能使用CLI。
創建JsonText實例
在2:31,Tim展示了將您的JSON字符串轉換為Spectre可渲染對象的語法。 他寫道:
using Spectre.Console.Json;
var json = new JsonText(jsonResponse);
using Spectre.Console.Json;
var json = new JsonText(jsonResponse);
這會從您的字符串創建一個新的JsonText實例。 現在您有了一個Spectre可以用樣式渲染的對象。 您不必自己解析數組、null值或嵌套對象——程式庫會為您處理這些操作。
在面板內渲染JSON
在3:00,Tim實際演示了將JSON寫入控制台。 他使用Spectre的面板功能來框定數據:
AnsiConsole.Write(
new Panel(json)
);
AnsiConsole.Write(
new Panel(json)
);
在3:39,當他運行代碼時,JSON以風格化的框顯示。 鍵為藍色,數字和布林值為綠色,文本值為紅色。 即使是數組數據和嵌套對象也顯示正確。 Spectre會自動包裹長行,這樣您不必自己處理縮排或間距。

他還在3:59指出,許多終端中的JSON內的URL成為可點擊的連結——對於直接從控制台讀取JSON的人來說,這是另一個好處。
添加標題、邊框和樣式
在4:09,Tim進入樣式設置。 他在面板上連鎖式調用方法來設置標題、折疊多餘的空間和更改邊框顏色:
var panel = new Panel(json)
.Header("API Response")
.Collapse()
.BorderColor(Color.White);
AnsiConsole.Write(panel);
var panel = new Panel(json)
.Header("API Response")
.Collapse()
.BorderColor(Color.White);
AnsiConsole.Write(panel);
在5:02,當他運行此構建時,控制台顯示一個標榜 "API Response" 的精美框架,正如您可能在網絡工具或IDE中看到的那樣。這使得來自API的信息更容易閱讀。

自定義JSON顏色
在5:14,Tim展示您可以單獨更改JSON部分的顏色。 他並沒有更換每個屬性,只是足以展示語法:
json.StringColor = Color.Yellow;
json.ColonColor = Color.Orange;
json.StringColor = Color.Yellow;
json.ColonColor = Color.Orange;
在5:52,當他運行時,文本值為黃色,冒號為橙色。 您可以使用Color.Red、Color.Green或其他已定義的Spectre顏色。 這讓您可以匹配您的公司風格或在控制台中突出顯示特定的值。
為什麼Spectre Console JSON很重要
在6:04,Tim總結了優勢。 使用Spectre Console JSON,您可以:
-
安裝一個NuGet包並獲得JSON格式化的"超能力"。
-
將JSON普通字符串自動呈現為彩色對象。
-
處理數組、嵌套集合、null值和大型數據集,而不必編寫自己的格式化代碼。
-
輕鬆為面板添加標題、邊框和自定義顏色。
- 保持控制台應用程式專業且易於閱讀。
他強調您不必手動構建縮排、處理間距或定義顏色。 程式庫為您處理這些操作。
結論
在6:38,Tim通過感謝觀眾來結束討論。 他已展示了如何從API獲取JSON,將其轉換為JsonText對象,並在具有自定義顏色設置的風格化面板中顯示它。
只需一個額外的NuGet包和幾行代碼,您的控制台應用程式就可以獲得"JSON超能力"——美觀、可讀的數據輸出。
如果您想深入了解,請查看Spectre Console專案網站或Tim的頻道以獲取更詳細的指導。 正如Tim在他的影片中演示的那樣,一旦您安裝了包並創建了JsonText實例,所有繁重的工作都已完成。 您的控制台應用程式將成為一個更加有用的工具,用於讀取、處理和分享JSON資訊。
