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は視覚的に魅力的なコンソールアプリケーションを作成するため for .NETライブラリとしてSpectre Consoleを紹介します。 このレッスンでは、API から JSON データをフェッチし、Spectre Console JSON を使用して表示すると説明しています。 つまり、生のJSON文字列は、Spectreがレンダリングできるリッチなオブジェクトに変換できます。
彼は、ソースコードとプロジェクトのウェブサイトのリンクが説明文にあり、プロジェクトを自分でダウンロードできることに言及しています。
ヘルパー関数で JSON データを取得する
0:35に、Timがヘルパーコードを示します。 彼のプロジェクトでは、FetchApiDataAsyncという関数を持つHelpersクラスがあります。 この関数は、URLにリクエストを送信し、JSONを取得し、レスポンスを文字列として返します。
AnsiConsole.WriteLine(jsonResponse)を使用すれば、コンソールにJSONを書き込むことができる。 しかし、彼が1:26で示すように、その生の出力は、読む人にとっても作業する人にとってもフレンドリーではない、単なるテキストの密集したコレクションである。
SpectreコンソールJSONパッケージのインストール
1:46で、ティムはJSONを適切にフォーマットしたいと言っている。 その前に、JSON拡張パッケージが必要だ。 彼はプロジェクトを右クリックし、"Manage NuGet Packages "を選択し、Spectre.Console.Jsonをインストールします。
CLIを使用して実行することもできると指摘しています:
dotnet add package Spectre.Console.Jsondotnet add package Spectre.Console.JsonこれはJSONレンダリングの公式NuGetパッケージです。 2:14でTimが説明するように、SpectreパッケージとSpectre.Console.Jsonパッケージの両方でAOT(ahead-of-time)コンパイルアプリを作ることができますが、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は多くのターミナルでクリック可能なリンクになることを指摘している。
ヘッダー、ボーダー、スタイルの追加
4:09、ティムはスタイリングに移る。 彼は、ヘッダーを設定し、余分なスペースを折り畳み、境界線の色を変更するために、パネル上のメソッドを連鎖させる:
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"と書かれた洗練されたボックスが表示される。これにより、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で、ティムはその利点を要約している。 Spectre Console JSON を使用すると、次のことができます:
NuGetパッケージを1つインストールするだけで、JSONフォーマットの "スーパーパワー "を手に入れることができます。
JSONのプレーンな文字列を取得し、自動的に着色されたオブジェクトとしてレンダリングします。
独自の書式設定コードを書くことなく、配列、ネストされたコレクション、NULL値、大規模なデータセットを扱うことができます。
パネルにヘッダー、ボーダー、カスタムカラーを簡単に追加できます。
- プロフェッショナルで読みやすいコンソールアプリケーションを維持してください。
彼は、インデントを作ったり、スペーシングを処理したり、色を手動で定義する必要がないことを強調しています。 ライブラリがこれらの作業を代行します。
結論
6:38で、ティムは視聴者への感謝の言葉で締めくくった。 APIからJSONを取得し、JsonTextオブジェクトに変換し、カスタムカラー設定でスタイルパネル内に表示する方法を示しています。
NuGetパッケージを1つ追加し、コードを数行書くだけで、コンソールアプリは"JSONスーパーパワー"を得ることができます。
より深く掘り下げたい場合は、Spectre Console プロジェクトのウェブサイト、または Tim の チャンネル をチェックして、より詳細な手順を確認してください。 ティムがビデオで説明しているように、パッケージをインストールし、JsonTextインスタンスを作成すれば、重い作業はすべて完了です。 コンソールアプリは、JSON 情報を読み、作業し、共有するためのはるかに便利なツールになります。

