Formatowanie wyjścia JSON - seria Spectre Console
Spectre Console to biblioteka .NET, która pozwala tworzyć bogate, kolorowe aplikacje konsolowe. Zamiast zwykłego tekstu możesz użyć paneli, tabel, a nawet formatowania JSON w Spectre, aby pięknie zaprezentować dane.
W tym artykułe przyjrzymy się szczegółowo Spectre Console JSON, tak jak pokazano w filmie Tima Coreya "Formatting JSON Output – Spectre Console Series". Omówimy jego kod, instalacje pakietów NuGet oraz wskazówki dotyczące stylizacji. Zobaczysz, jak nadać swoim aplikacjom konsolowym "supermoce JSON" dzięki przejrzystemu podświetlaniu składni i czytelnym układom. Wszystkie oznaczenia czasowe w nagłówkach odpowiadają filmowi Tima, dzięki czemu można śledzić jego treść.
Pierwsze kroki: Czym jest Spectre Console JSON
O 0:00 Tim przedstawia Spectre Console jako bibliotekę .NET do tworzenia atrakcyjnych wizualnie aplikacji konsolowych. Wyjaśnia, że w tej lekcji zamierza pobrać dane JSON z interfejsu API i wyświetlić je za pomocą Spectre Console JSON. Oznacza to, że ciąg surowego JSON może zostać przekształcony w bogaty obiekt, który Spectre może wyrenderować.
Autor wspomina, że kod źródłowy i link do strony projektu znajdują się w opisie, dzięki czemu można samodzielnie pobrać projekt.
Pobieranie danych JSON za pomocą funkcji pomocniczej
W 0:35 Tim pokazuje kod pomocniczy. W swoim projekcie posiada klasę Helpers z funkcją o nazwie FetchApiDataAsync. Ta funkcja wysyła żądanie do adresu URL, pobiera dane JSON i zwraca odpowiedź w postaci ciągu znaków.
Zauważa, że można po prostu użyć AnsiConsole.WriteLine(jsonResponse), aby zapisać JSON w konsoli. Jednak, jak pokazuje w 1:26, ten surowy wynik to po prostu gęsty zbiór tekstu — nieprzyjazny dla osób, które go czytają lub z nim pracują.
Instalacja pakietu JSON Spectre Console
W 1:46 Tim mówi, że chce poprawnie sformatować JSON. Najpierw jednak potrzebuje pakietu rozszerzeń JSON. Kliknął prawym przyciskiem myszy na projekt, wybrał "Zarządzaj pakietami NuGet" i zainstalował Spectre.Console.Json.
Zwraca uwagę, że można również użyć CLI i uruchomić:
dotnet add package Spectre.Console.Json
dotnet add package Spectre.Console.Json
Jest to oficjalny pakiet NuGet do renderowania JSON. Jak wyjaśnia Tim w 2:14, można stworzyć aplikację skompilowaną metodą AOT (ahead-of-time) zarówno przy użyciu pakietu Spectre, jak i pakietu Spectre.Console.Json, ale obecnie nie jest to możliwe przy użyciu CLI.
Tworzenie instancji JsonText
O 2:31 Tim pokazuje składnię służącą do przekształcenia ciągu JSON w obiekt renderowalny przez Spectre. Pisze:
using Spectre.Console.Json;
var json = new JsonText(jsonResponse);
using Spectre.Console.Json;
var json = new JsonText(jsonResponse);
Tworzy to nową instancję JsonText na podstawie podanego ciągu znaków. Teraz masz obiekt, który Spectre może renderować z klasą. Nie musisz samodzielnie analizować tablic, wartości null ani obiektów zagnieżdżonych — biblioteka zrobi to za Ciebie.
Renderowanie JSON wewnątrz panelu
O godz. 3:00 Tim pokazuje, jak faktycznie zapisać JSON w konsoli. Używa funkcji panelu Spectre do kadrowania danych:
AnsiConsole.Write(
new Panel(json)
);
AnsiConsole.Write(
new Panel(json)
);
O 3:39, kiedy uruchamia kod, JSON pojawia się w stylizowanym polu. Klucze są niebieskie, liczby i wartości logiczne są zielone, a wartości tekstowe są czerwone. Nawet dane tablicowe i obiekty zagnieżdżone wyświetlają się poprawnie. Spectre automatycznie zawija długie linie, więc nie musisz samodzielnie tworzyć wcięć ani odstępów.

W 3:59 zauważa również, że adresy URL w pliku JSON stają się klikalnymi linkami w wielu terminalach — to kolejna zaleta dla osób czytających JSON bezpośrednio z konsoli.
Dodawanie nagłówków, obramowań i stylów
O 4:09 Tim przechodzi do kwestii stylizacji. Łączy metody na panelu, aby ustawić nagłówek, zwinąć nadmiarową przestrzeń i zmienić kolor obramowania:
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);
O 5:02, kiedy uruchamia tę kompilację, konsola wyświetla eleganckie okienko z napisem "API Response", dokładnie tak, jak można to zobaczyć w narzędziu internetowym lub środowisku IDE. Dzięki temu informacje z API są znacznie łatwiejsze do odczytania.

Dostosowywanie kolorów JSON
O 5:14 Tim pokazuje, że można indywidualnie zmieniać kolor poszczególnych części JSON. Nie zmienia on wszystkich właściwości, a jedynie tyle, ile potrzeba do zademonstrowania składni:
json.StringColor = Color.Yellow;
json.ColonColor = Color.Orange;
json.StringColor = Color.Yellow;
json.ColonColor = Color.Orange;
O 5:52, kiedy uruchamia program, wartości tekstowe są żółte, a dwukropki pomarańczowe. Możesz użyć koloru Color.Red, Color.Green lub dowolnego innego zdefiniowanego koloru Spectre. Pozwala to dopasować styl do wizerunku firmy lub podkreślić konkretne wartości w konsoli.
Dłączego Spectre Console JSON ma znaczenie
O godz. 6:04 Tim podsumowuje zalety. Dzięki Spectre Console JSON możesz:
-
Zainstaluj jeden pakiet NuGet i zyskaj "supermoce" formatowania JSON.
-
Pobierz zwykły ciąg JSON i automatycznie renderuj go jako kolorowy obiekt.
-
Pracuj z tablicami, zagnieżdżonymi kolekcjami, wartościami null i dużymi zbiorami danych bez konieczności pisania własnego kodu formatującego.
-
Łatwo dodawaj nagłówki, obramowania i niestandardowe kolory do paneli.
- Dbaj o profesjonalny wygląd i czytelność swoich aplikacji konsolowych.
Podkreśla, że nie trzeba ręcznie tworzyć wcięć, zajmować się odstępami ani definiować kolorów. Biblioteka wykonuje te operacje za Ciebie.
Wnioski
O 6:38 Tim kończy, dziękując widzom. Pokazał, jak pobrać JSON z API, przekonwertować go na obiekt JsonText i wyświetlić w stylizowanym panelu z niestandardowymi ustawieniami kolorów.
Wystarczy jeden dodatkowy pakiet NuGet i kilka linii kodu, aby Twoja aplikacja konsolowa zyskała "supermoce JSON" — piękny, czytelny wynik dla Twoich danych.
Jeśli chcesz zgłębić temat, odwiedź stronę projektu Spectre Console lub kanał Tima, aby uzyskać bardziej szczegółowe instrukcje. Jak pokazuje Tim w swoim filmie, po zainstalowaniu pakietu i utworzeniu instancji JsonText cała ciężka praca jest już za nami. Twoja aplikacja konsolowa staje się znacznie bardziej użytecznym narzędziem do odczytu, pracy i udostępniania informacji JSON.
