Konwerter PowerShell do JSON
Wklej hashtable PowerShell albo PSCustomObject. Dostajesz JSON.
Co robi to narzędzie
Jeśli kiedykolwiek skopiowałeś hashtable @{...} ze skryptu PowerShell i potrzebowałeś odpowiednika w JSON — bez odpalania shella i pipe'owania przez ConvertTo-Json — to narzędzie jest dokładnie do tego. Wklejasz PowerShell, dostajesz czysty JSON. Działa dla pojedynczego hashtable, instancji [PSCustomObject] albo całego łańcucha zagnieżdżonych bloków @{} z tablicami w środku.
Wyjście zgadza się z tym, co dałoby ConvertTo-Json -Depth 100. Hashtable i [PSCustomObject] stają się obiektami JSON. Tablice (@(1,2,3)) stają się tablicami JSON. $null to null, $true/$false to boolean-y JSON. Wartości DateTime wychodzą jako stringi ISO-8601 — ta sama konwencja, której używa PowerShell 7.
Klucze ze spacjami albo znakami specjalnymi zostają w cudzysłowach. Literały numeryczne (42, 3.14) zostają liczbami. Stringi w apostrofach i cudzysłowach parsują się poprawnie, a sekwencje escape w cudzysłowach (`n, `t) są rozwijane. Jeśli wkleisz kilka przypisań najwyższego poziomu, każde staje się kluczem w wyjściowym JSON, nazwanym po zmiennej.
Jak tego użyć
Trzy kroki. Działa tak samo, czy wklejasz hashtable z dwoma kluczami, czy cały blok konfiguracji.
Wklej swojego PowerShella (albo spróbuj przykładu)
Wrzuć kawałek skryptu do edytora po lewej. Hashtable, [PSCustomObject], zagnieżdżone @{} bloki albo tablica obiektów — wszystko w porządku. Wczytaj przykład pokazuje realistyczny przypadek zamówienia.
Nie musisz nic czyścić — zostaw prefiksy $variable, casty [PSCustomObject] i komentarze tak jak są.
Wciśnij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie parsuje hashtable, przechodzi po każdej zagnieżdżonej strukturze i buduje JSON w jednym przebiegu.
Skopiuj JSON
Prawy panel wypełnia się wciętym JSON-em. Wklej go do szablonu ARM, body Invoke-RestMethod albo fixture'a JSON do testu Pester.
Kiedy to naprawdę się przydaje
Budowanie body requestów REST API
Masz hashtable gotową do wysłania przez <code>Invoke-RestMethod</code> i chcesz najpierw sprawdzić kształt JSON-a. Wklej, zerknij, wyślij.
Konwersja config-owych hashtable do plików JSON
Zespół używa plików konfiguracyjnych <code>.psd1</code>, ale nowy serwis oczekuje JSON. Wklej hashtable i zapisz wynik jako <code>config.json</code>.
Pliki parametrów ARM / Bicep
Parametry szablonów ARM są w JSON, ale często budujesz je najpierw jako hashtable w PowerShellu. Skonwertuj raz i zacommituj JSON.
Karmienie narzędzi downstream
Skrypty CI w PowerShellu często muszą przekazać ustrukturyzowane dane do Pythona, Node'a albo komendy kontenera, która oczekuje JSON-a na stdin. Właśnie to przekazanie.
Częste pytania
Czy pasuje do wyjścia ConvertTo-Json?
Tak — celem jest parytet z ConvertTo-Json -Depth 100 -Compress:$false. Hashtable i obiekty [PSCustomObject] stają się obiektami JSON; tablice tablicami JSON; $null, $true, $false mapują się standardowo.
A co z [PSCustomObject] w porównaniu do zwykłego hashtable?
Oba konwertują się do tego samego obiektu JSON. [PSCustomObject] zachowuje kolejność właściwości, a narzędzie to respektuje. Zwykłe hashtable są domyślnie sortowane alfabetycznie — tak samo jak ConvertTo-Json.
Mogę wkleić cały skrypt?
Tak, ale do wyjścia trafiają tylko przypisania najwyższego poziomu $variable = @{...} i [PSCustomObject]@{...}. Definicje funkcji, control flow i wywołania cmdletów są ignorowane. Każda zmienna najwyższego poziomu staje się kluczem w JSON, nazwanym po zmiennej.
Jak są traktowane daty i liczby?
Wyjścia [DateTime] i Get-Date wychodzą jako stringi ISO-8601. Literały numeryczne (łącznie z [decimal]) zostają liczbami JSON. Daty wklejone jako surowe stringi zostają stringami.
Czy mój kod jest przechowywany?
Kod idzie do backendu do konwersji i nie jest persystowany — nie logujemy payloadu. Jeśli hashtable zawiera sekrety, wyczyść je przed wklejeniem.
Obsługuje here-stringi i wielolinijkowe wartości stringowe?
Tak. Here-stringi @"..."@ i @'...'@ są zachowywane jako stringi JSON z poprawnym kodowaniem newline'ów.
Inne narzędzia, które mogą ci się przydać
PowerShell do JSON dobrze gra z resztą zestawu: