PowerShell'de JSON Dosyasını Diziye Nasıl Okurum?


JSON (JavaScript Object Notation), insanların okuması ve yazması, makinelerin ise ayrıştırması ve oluşturması kolay olan hafif bir veri değişim formatıdır. Bu PowerShell eğitiminde, bir JSON dosyasını PowerShell'deki bir diziye nasıl okuyacağımı açıklayacağım.

PowerShell'de bir JSON dosyasını bir diziye okumak için, dosya içeriğini almak ve onu ConvertFrom-Json cmdlet'ine yönlendirmek üzere Get-Content cmdlet'ini kullanın. Örneğin, $array=Get-Content -Path 'file.json' | JSON bir dizi biçimiyse ConvertFrom-Json, JSON dosyasını bir PowerShell dizisine ayrıştırır.

JSON'u Anlamak

PowerShell'e dalmadan önce bir JSON dosyasının yapısını anlayalım. Bir JSON dosyası genellikle yapılandırılmış bir formattaki anahtar/değer çiftlerinden oluşur. Nesneleri (küme parantezi { ile gösterilir) ve dizileri (köşeli parantez [] ile gösterilir) içerebilir. İşte basit bir JSON dosyası örneği:

{
  "users": [
    {"name": "John", "age": 30},
    {"name": "Jane", "age": 25},
    {"name": "Doe", "age": 22}
  ]
}

Bu örnekte, kullanıcılar, her biri bir ad ve yaş içeren bir nesne dizisidir.

JSON'u PowerShell Dizisine Okumak

JSON verilerini PowerShell'de bir diziye okumak için JSON biçimli dizeleri PowerShell nesnelerine dönüştüren ConvertFrom-Json cmdlet'ini kullanırız.

Yöntem 1: Get-Content ve ConvertFrom-Json'u kullanma

PowerShell'de bir JSON dosyasını bir diziye okumak için en yaygın yaklaşım, dosyanın içeriğini almak için Get-Content kullanmak ve ardından onu ConvertFrom-Json'a yönlendirmektir.

İşte adım adım bir örnek:

  1. JSON dosyanızı kaydedin. Bu örnek için onu users.json olarak adlandıracağız.
  2. PowerShell'i açın ve aşağıdaki komutu girin:
$jsonData = Get-Content -Path 'C:\Bijay\users.json' | ConvertFrom-Json
  1. Artık $jsonData, JSON dosyasının içeriğini bir PowerShell nesnesi olarak içeriyor. users dizisine erişmek için $jsonData.users komutunu kullanabilirsiniz.
$usersArray = $jsonData.users
  1. Dizide döngü yapabilir ve her kullanıcının özelliklerine şu şekilde erişebilirsiniz:
foreach ($user in $usersArray) {
  Write-Host "Name: $($user.name), Age: $($user.age)"
}

VS kodunu kullanarak PowerShell betiğini çalıştırdıktan sonra çıktıyı görebilirsiniz.

$jsonData = Get-Content -Path 'C:\Bijay\users.json' | ConvertFrom-Json
$usersArray = $jsonData.users
foreach ($user in $usersArray) {
    Write-Host "Name: $($user.name), Age: $($user.age)"
  }

Yöntem 2: ConvertFrom-Json'u Doğrudan Kullanma

PowerShell'de bir JSON dosyasını okumanın başka bir yolu da ConvertFrom-Json'u doğrudan -InputObject parametresiyle kullanmaktır.

$jsonContent = Get-Content -Path 'C:\path\to\your\users.json' -Raw
$jsonData = $jsonContent | ConvertFrom-Json

-Raw parametresi, Get-Content'in dosyayı tek bir dize olarak okumasını sağlar; bu, ConvertFrom-Json'un JSON yapısını ayrıştırması için gereklidir. düzgün bir şekilde.

Yöntem 3: JSON'u Özel Nesnelerle Kullanma

Bazen JSON verilerini doğrudan özel PowerShell nesnelerine dönüştürmek isteyebilirsiniz. Bu, PowerShell'de bir sınıf tanımlayıp ardından JSON'u doğrudan o sınıfın nesnelerine aktarmak için ConvertFrom-Json kullanılarak yapılabilir.

class User {
  [string]$name
  [int]$age
}

$jsonData = Get-Content -Path 'C:\path\to\your\users.json' | ConvertFrom-Json

$usersArray = @($jsonData.users | ForEach-Object {
  $_ | ConvertTo-Json | ConvertFrom-Json -As [User]
})

Bu örnekte, her kullanıcıyı bir JSON dizesine dönüştürmek için ConvertTo-Json kullanılır ve bu dize daha sonra -AsConvertFrom-Json'a aktarılır. > Kullanıcı özel sınıfını belirten parametre.

İpuçları:

  • JSON dosyalarını okurken, dosyanın tamamının tek bir dize olarak okunduğundan emin olmak için her zaman Get-Content ile birlikte -Raw parametresini kullanın.
  • Dizinin içeriğini hata ayıklama amacıyla konsola yazdırmak için Write-Host veya Write-Output'u kullanın.
  • PowerShell büyük/küçük harfe duyarlı değildir, ancak JSON anahtarları büyük/küçük harfe duyarlıdır. JSON anahtarlarından bahsederken büyük/küçük harfin eşleştiğinden emin olun.
  • JSON dosyanızı PowerShell ile ayrıştırmayı denemeden önce doğru biçimlendirildiğinden emin olmak için bir JSON doğrulayıcıyla doğrulayın.

Çözüm

JSON verilerini PowerShell'de bir diziye okumak basit bir işlemdir. İster Get-Content ve ConvertFrom-Json'u birlikte kullanıyor olun, ister JSON verilerini özel nesnelerle kullanıyor olun, PowerShell, JSON dosyalarıyla çalışma esnekliği sağlar.

Bu PowerShell eğitiminde, PowerShell'de bir JSON dosyasının bir diziye nasıl okunacağını açıkladım.

İlgili makaleler