Sola PowerShell yapıştır ve "Dönüştür"e tıkla — biz onu JSON’a çeviririzPowerShell kodu yapıştır

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.

1

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.

2

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.

3

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: