PowerShell'de String'i JSON'a Nasıl Dönüştürürüm?
Yakın zamanda müşterilerimden biri benden bir otomasyon betiği için bir dizeyi JSON'a dönüştürmemi istedi. PowerShell'de çeşitli yöntemler denedim. Bu PowerShell eğitiminde size farklı yöntemler kullanarak PowerShell'de string'i JSON'a nasıl dönüştüreceğinizi göstereceğim.
PowerShell'de bir dizeyi JSON'a dönüştürmek için en yaygın ve basit yöntem ConvertTo-Json cmdlet'ini kullanmaktır. Bu cmdlet, PowerShell nesnelerini girdi olarak alır ve bunları JSON biçimli bir dizeye dönüştürür. Örneğin, ABD şehirleriyle ilgili verileri içeren bir karma tablosu oluşturabilir ve bunu şu şekilde JSON'a dönüştürebilirsiniz: $cityData=@{ “New York”=@{ “Population”=8336817 }; “Los Angeles”=@{ “Nüfus”=3898747 } }; $jsonString=$şehirVerisi | ConvertTo-Json.
Yöntem 1: ConvertTo-Json Cmdlet'ini Kullanma
PowerShell, PowerShell nesnelerini JSON biçimine dönüştürmek için ConvertTo-Json cmdlet'ini sağlar. Bu yöntemin kullanımı çok kolaydır ve çoğu PowerShell geliştiricisi bunu JSON nesneleriyle çalışmak için kullanır.
İşte bir örnek.
$cityData = @{
"New York" = @{
"Population" = 8336817
"State" = "New York"
}
"Los Angeles" = @{
"Population" = 3898747
"State" = "California"
}
"Chicago" = @{
"Population" = 2746388
"State" = "Illinois"
}
}
$jsonString = $cityData | ConvertTo-Json
Write-Output $jsonStringBu komut dosyası bir karma tablosu oluşturur ve ardından onu bir JSON dizesine dönüştürür.
Yukarıdaki PowerShell betiğini çalıştırdım ve JSON'u görüntülediğini görebilirsiniz; aşağıdaki ekran görüntüsüne bakın:
PowerShell'de Dizeyi Hashtable'a Dönüştürme bölümünü okuyun
Yöntem 2: Here-String'leri Kullanma
JSON yapısı biraz karmaşıksa kullanabileceğiniz başka bir yöntem daha var. Daha iyi okunabilirlik sağlayan, önceden biçimlendirilmiş bir JSON ile here-string'leri kullanabilirsiniz:
Ekran görüntüsünü aşağıda görebilirsiniz:
$jsonString = @"
{
"NationalParks": [
{
"Name": "Yellowstone",
"State": "Wyoming",
"EstablishedYear": 1872
},
{
"Name": "Yosemite",
"State": "California",
"EstablishedYear": 1890
},
{
"Name": "Grand Canyon",
"State": "Arizona",
"EstablishedYear": 1919
}
]
}
"@
$jsonObject = $jsonString | ConvertFrom-Json
Write-Output $jsonObject.NationalParksBu örnek, bir JSON dizesi oluşturur ve daha sonra onu daha fazla düzenleme için bir PowerShell nesnesine dönüştürür.
PowerShell'de Dizeyi Int'ye Dönüştürme bölümünü okuyun
Yöntem 3: Özel Nesneleri Kullanma
Ayrıca özel PowerShell nesneleri oluşturabilir ve bunları JSON'a dönüştürebilirsiniz:
$usCapitals = @(
[PSCustomObject]@{
City = "Washington D.C."
Type = "Federal Capital"
Population = 689545
},
[PSCustomObject]@{
City = "Albany"
Type = "State Capital"
State = "New York"
Population = 96460
},
[PSCustomObject]@{
City = "Sacramento"
Type = "State Capital"
State = "California"
Population = 508529
}
)
$jsonString = $usCapitals | ConvertTo-Json
Write-Output $jsonStringBu komut dosyası bir dizi özel nesne oluşturur ve onu JSON'a dönüştürür.
Yöntem 4: Özel Karakterleri İşle
Özel karakterler içeren dizelerle uğraşırken uygun kaçışın sağlanması önemlidir. İşte tam bir örnek ve komut dosyası.
$cityDescription = @{
"New Orleans" = "Known for its vibrant music scene & Mardi Gras"
"San Francisco" = "Famous for the Golden Gate Bridge & cable cars"
"Nashville" = "Home of country music & the \"Grand Ole Opry\""
}
$jsonString = $cityDescription | ConvertTo-Json -EscapeHandling EscapeNonAscii
Write-Output $jsonString
Bu örnek, JSON dönüşümünde özel karakterlerin ve tırnak işaretlerinin nasıl işleneceğini açıklamaktadır.
İşte başka bir örnek.
# Sample object with special characters
$data = @{
Name = "Müller"
City = "München"
Description = "Café `"`"Zum schönen Müller`"`""
}
# Convert the object to JSON
$json = $data | ConvertTo-Json
# Output the JSON
$jsonPowerShell'de JSON'u CSV'ye Nasıl Dönüştürebilirim? konusuna bakın.
JSON Dosyasını Doğrulayın
Bir dizeyi JSON'a dönüştürdükten sonra doğruluğunu doğrulamak önemlidir. PowerShell bu amaç için Test-Json cmdlet'ini sağlar:
$jsonString = '{"Boston": {"Nickname": "The Hub", "State": "Massachusetts"}}'
$isValid = Test-Json $jsonString
if ($isValid) {
Write-Output "The JSON is valid."
} else {
Write-Output "The JSON is not valid."
}Bu komut dosyası, oluşturulan JSON dizesinin JSON standartlarına göre geçerli olup olmadığını kontrol eder.
Çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
Çözüm
Bu eğitimde, aşağıdaki gibi farklı yöntemleri kullanarak PowerShell'de dizeleri JSON'a nasıl dönüştüreceğimi açıkladım:
- ConvertTo-Json Cmdlet'ini Kullanma
- Here-String'leri Kullanmak
- Özel Nesnelerin Kullanılması vb.
Ayrıca Test-Json PowerShell cmdlet'lerini kullanarak JSON çıktısının nasıl doğrulanacağını da anlattım.

