PowerShell’dan JSON’a Dönüştürücü
Bir PowerShell hashtable’ı veya PSCustomObject yapıştır. JSON geri al.
Bu araç ne işe yarar
Bir PowerShell scriptinden @{...} hashtable’ı kopyalayıp — shell açmadan ve ConvertTo-Json’a pipe’lamadan — JSON karşılığına ihtiyaç duyduysan, bu araç tam olarak bunun için. PowerShell’i yapıştır, temiz JSON geri al. Tek bir hashtable, bir [PSCustomObject] örneği veya içinde dizi barındıran iç içe @{} blokları zinciri — hepsinde çalışır.
Çıktı, ConvertTo-Json -Depth 100’ın vereceği sonuçla örtüşür. Hashtable’lar ve [PSCustomObject]’ler JSON nesnesine dönüşür. Diziler (@(1,2,3)) JSON dizisi olur. $null, null’a; $true/$false ise JSON boolean’larına dönüşür. DateTime değerleri ISO-8601 stringleri olarak yayılır — PowerShell 7’nin kullandığı konvansiyonun aynısı.
Boşluk veya özel karakter içeren anahtarlar tırnak içinde kalır. Sayısal literaller (42, 3.14) sayı olarak kalır. Tek ve çift tırnaklı stringler doğru parse edilir, çift tırnak içindeki kaçış dizileri (`n, `t) çözülür. Birden fazla üst düzey atama yapıştırırsan, her biri çıktı JSON’ında değişken adıyla bir anahtar olur.
Nasıl kullanılır
Üç adım. İki anahtarlı bir hashtable yapıştırsan da koca bir konfig bloğu yapıştırsan da aynı şekilde çalışır.
PowerShell’ini yapıştır (ya da örneği dene)
Script parçanı soldaki editöre bırak. Bir hashtable, bir [PSCustomObject], iç içe @{} blokları veya bir nesne dizisi — hepsi geçerli. Örneği Yükle gerçekçi bir sipariş örneği gösterir.
Hiçbir şey temizlemene gerek yok — $variable öneklerini, [PSCustomObject] cast’lerini ve yorumları olduğu gibi bırak.
Dönüştür’e bas
Yeşil Dönüştür butonuna tıkla. Araç hashtable’ı parse eder, iç içe her yapıyı gezer ve JSON’ı tek geçişte üretir.
JSON’ı kopyala
Sağdaki panel girintili JSON’la dolar. Bir ARM şablonuna, bir Invoke-RestMethod gövdesine veya bir Pester testinin JSON fixture’ına yapıştır.
Gerçekten işe yaradığı anlar
REST API istek gövdelerini kurmak
<code>Invoke-RestMethod</code> ile göndermeye hazır bir hashtable’ın var ve önce JSON şeklini doğrulamak istiyorsun. Yapıştır, incele, sonra gönder.
Konfig hashtable’larını JSON dosyalarına çevirmek
Ekip <code>.psd1</code> konfig dosyaları kullanıyor ama yeni bir servis JSON bekliyor. Hashtable’ı yapıştır, çıktıyı <code>config.json</code> olarak kaydet.
ARM / Bicep parametre dosyaları
ARM şablon parametreleri JSON’dır ama çoğu zaman önce PowerShell hashtable’ı olarak kurarsın. Bir kere dönüştür ve JSON’ı commit’le.
Aşağı akış araçlarını beslemek
PowerShell’deki CI scriptleri çoğu zaman yapılandırılmış veriyi Python’a, Node’a veya stdin’den JSON bekleyen bir konteyner komutuna teslim etmek zorundadır. İşte o teslim noktası.
Sık sorulan sorular
ConvertTo-Json çıktısıyla eşleşiyor mu?
Evet — hedef ConvertTo-Json -Depth 100 -Compress:$false ile birebir olmak. Hashtable’lar ve [PSCustomObject] nesneleri JSON nesnesine, diziler JSON dizisine, $null, $true, $false alışılmış şekilde eşlenir.
[PSCustomObject] ile düz bir hashtable arasında ne fark var?
İkisi de aynı JSON nesnesine dönüşür. [PSCustomObject] property sırasını korur, araç da buna uyar. Düz hashtable’lar varsayılan olarak alfabetik sıralanır — ConvertTo-Json’la aynı.
Tüm bir script’i yapıştırabilir miyim?
Yapabilirsin ama çıktıya yalnızca üst düzey $variable = @{...} ve [PSCustomObject]@{...} atamaları dahil olur. Fonksiyon tanımları, kontrol akışı ve cmdlet çağrıları yok sayılır. Her üst düzey değişken, JSON’da değişken adıyla bir anahtar olur.
Tarihler ve sayılar nasıl ele alınıyor?
[DateTime] ve Get-Date çıktıları ISO-8601 stringleri olarak yayılır. Sayısal literaller ([decimal] dahil) JSON sayısı olarak kalır. Ham string olarak yapıştırılan tarihler string olarak korunur.
Kodum saklanıyor mu?
Kodun dönüştürme için backend’e gönderilir, kalıcı hale getirilmez — payload’ı loglamıyoruz. Hashtable’da sır varsa yapıştırmadan önce temizle.
Here-string’leri ve çok satırlı string değerleri destekliyor mu?
Evet. @"..."@ ve @'...'@ here-string’leri doğru newline kodlamasıyla JSON stringi olarak korunur.
İhtiyaç duyabileceğin diğer araçlar
PowerShell’dan JSON’a, alet çantasının geri kalanıyla iyi anlaşır: