PowerShell'de JSON'u CSV'ye Nasıl Dönüştürürüm?


Bugün PowerShell'de JSON'u CSV'ye dönüştürme konusunda önemli bir gereksinimim var. Bunu yapmanın çeşitli yöntemleri vardır. Bu eğitimde size örneklerle farklı yöntemler kullanarak JSON'u PowerShell'de CSV'ye nasıl dönüştüreceğinizi göstereceğim.

PowerShell'de bir JSON değişkenini CSV'ye dönüştürmek için önce Get-Content kullanarak JSON verilerini yükleyin ve ConvertFrom-Json ile bir PowerShell nesnesine dönüştürün. Ardından, Export-Csv'yi kullanarak verileri bir CSV dosyasına aktarın. Örneğin, data.json JSON dosyanız varsa aşağıdaki komutları kullanabilirsiniz:

$jsonData = Get-Content -Path "C:\MyFolder\data.json" -Raw | ConvertFrom-Json
$jsonData | Export-Csv -Path "C:\MyFolder\data.csv" -NoTypeInformation

Bu, JSON verilerini içeren bir CSV dosyası oluşturarak, işlenmesini ve analiz edilmesini kolaylaştıracaktır.

PowerShell'de JSON'u CSV'ye dönüştürün

JSON (JavaScript Object Notation), özellikle web uygulamalarında veri alışverişi için popüler bir formattır. Ancak bazen daha kolay analiz veya raporlama için JSON verilerini CSV (Virgülle Ayrılmış Değerler) biçimine dönüştürmeniz gerekebilir.

PowerShell'de bir JSON değişkenini CSV'ye dönüştürmenin birkaç örnek de dahil olmak üzere farklı yöntemleri vardır.

Tüm örnekler için aşağıdaki örneği alacağım.

Aşağıdaki içeriğe sahip özel bir JSON dosyası data.json alalım:

[
    {
        "Name": "John Doe",
        "Age": 30,
        "City": "New York"
    },
    {
        "Name": "Jane Smith",
        "Age": 25,
        "City": "Los Angeles"
    }
]

Yöntem 1: ConvertFrom-Json ve Export-Csv'yi Kullanarak Temel Dönüşüm

Şimdi, ConvertFrom-Json ve Export-Csv'yi kullanarak JSON'u CSV dosyalarına nasıl dönüştüreceğimizi görelim.

# Load JSON data
$jsonData = Get-Content -Path "C:\MyFolder\data.json" -Raw | ConvertFrom-Json

# Convert to CSV
$jsonData | Export-Csv -Path "C:\MyFolder\data.csv" -NoTypeInformation
  1. JSON Verilerini Yükleyin: Öncelikle JSON verilerinizi bir PowerShell değişkenine yükleyin.
  2. JSON'u PowerShell Nesnesine Dönüştürün: ConvertFrom-Json cmdlet'ini kullanın.
  3. CSV'ye aktar: Verileri CSV biçiminde kaydetmek için Export-Csv cmdlet'ini kullanın.

Yukarıdaki PowerShell betiğini çalıştırdığınızda, aşağıdaki içeriğe sahip bir CSV dosyası data.csv oluşturulur:

"Name","Age","City"
"John Doe","30","New York"
"Jane Smith","25","Los Angeles"

Yukarıdaki PowerShell betiğini çalıştırdım ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

PowerShell'de Dizeyi JSON'a Nasıl Dönüştüreceğinizi inceleyin?

Yöntem 2: PowerShell'de Yuvalanmış JSON'u CSV'ye Dönüştürme

İç içe JSON yapılarının dönüştürülmesi daha karmaşık olabilir. Bu gibi durumlarda JSON verilerini CSV'ye dönüştürmeden önce düzleştirmeniz gerekebilir.

Aşağıdaki iç içe geçmiş JSON verilerini göz önünde bulundurun:

[
    {
        "Name": "John Doe",
        "Details": {
            "Age": 30,
            "City": "New York"
        }
    },
    {
        "Name": "Jane Smith",
        "Details": {
            "Age": 25,
            "City": "Los Angeles"
        }
    }
]

Bunu halletmek için yapıyı düzleştirmek amacıyla Select-Object cmdlet'ini kullanabilirsiniz:

# Load JSON data
$jsonData = Get-Content -Path "C:\MyFolder\nested_data.json" -Raw | ConvertFrom-Json

# Flatten and convert to CSV
$jsonData | Select-Object Name, @{Name='Age';Expression={$_.Details.Age}}, @{Name='City';Expression={$_.Details.City}} | Export-Csv -Path "C:\MyFolder\nested_data.csv" -NoTypeInformation

Bu, aşağıdaki içeriğe sahip bir CSV dosyası nested_data.csv oluşturacaktır:

"Name","Age","City"
"John Doe","30","New York"
"Jane Smith","25","Los Angeles"

İşte aşağıdaki ekran görüntüsündeki çıktı:

PowerShell'de Dosyaya JSON Nasıl Yazılır? konusuna göz atın.

Yöntem 3: Özel PowerShell İşlevlerini Kullanma

Daha karmaşık senaryolar için dönüşümü işleyecek özel bir PowerShell işlevi oluşturmak isteyebilirsiniz. Bu, özellikle dönüştürmeyi sık sık gerçekleştirmeniz veya çeşitli JSON yapılarını işlemeniz gerekiyorsa kullanışlıdır.

İşte bir örnek.

JSON'u CSV'ye dönüştürmek için özel bir işlev aşağıda verilmiştir:

function Convert-JsonToCsv {
    param (
        [string]$jsonPath,
        [string]$csvPath
    )

    # Load JSON data
    $jsonData = Get-Content -Path $jsonPath -Raw | ConvertFrom-Json

    # Check if JSON data is an array
    if ($jsonData -is [System.Collections.IEnumerable]) {
        # Flatten nested structures if needed
        $flattenedData = $jsonData | ForEach-Object {
            [PSCustomObject]@{
                Name = $_.Name
                Age = $_.Details.Age
                City = $_.Details.City
            }
        }

        # Export to CSV
        $flattenedData | Export-Csv -Path $csvPath -NoTypeInformation
    } else {
        Write-Error "JSON data is not an array."
    }
}

# Usage
Convert-JsonToCsv -jsonPath "C:\MyFolder\nested_data.json" -csvPath "C:\MyFolder\output.csv"

Bu işlev, JSON dosyasının yolunu ve CSV dosyasını kaydetmek istediğiniz yolu alır. CSV'ye aktarmadan önce iç içe geçmiş yapıları düzleştirerek işler.

Çözüm

Bu eğiticide, ConvertFrom-Json ve Export-Csv'yi kullanarak PowerShell'de JSON'u CSV'ye nasıl dönüştüreceğimi açıkladım. Ayrıca PowerShell'de yuvalanmış json'un CSV'ye nasıl dönüştürüleceğini anlattım.

İlgili makaleler