ค้นหาเว็บไซต์

วิธีแปลง JSON เป็น CSV ใน PowerShell


วันนี้ ฉันมีข้อกำหนดที่สำคัญเกี่ยวกับการแปลง JSON เป็น CSV ใน PowerShell มีหลายวิธีในการทำเช่นนี้ ในบทช่วยสอนนี้ ฉันจะแสดงวิธีแปลง JSON เป็น CSV ใน PowerShell โดยใช้วิธีต่างๆ พร้อมตัวอย่าง

หากต้องการแปลงตัวแปร JSON เป็น CSV ใน PowerShell ขั้นแรกให้โหลดข้อมูล JSON โดยใช้ Get-Content และแปลงเป็นออบเจ็กต์ PowerShell ด้วย ConvertFrom-Json จากนั้น ส่งออกข้อมูลเป็นไฟล์ CSV โดยใช้ Export-Csv ตัวอย่างเช่น หากคุณมีไฟล์ JSON data.json คุณสามารถใช้คำสั่งต่อไปนี้:

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

วิธีนี้จะสร้างไฟล์ CSV ที่มีข้อมูล JSON ทำให้ง่ายต่อการจัดการและวิเคราะห์

แปลง JSON เป็น CSV ใน PowerShell

JSON (JavaScript Object Notation) เป็นรูปแบบยอดนิยมสำหรับการแลกเปลี่ยนข้อมูล โดยเฉพาะในเว็บแอปพลิเคชัน อย่างไรก็ตาม บางครั้งคุณอาจต้องแปลงข้อมูล JSON เป็นรูปแบบ CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค) เพื่อการวิเคราะห์หรือการรายงานที่ง่ายขึ้น

มีวิธีการต่างๆ ในการแปลงตัวแปร JSON เป็น CSV ใน PowerShell รวมถึงตัวอย่างบางส่วนด้วย

สำหรับตัวอย่างทั้งหมด ฉันจะยกตัวอย่างด้านล่างนี้

ลองใช้ไฟล์ JSON ที่กำหนดเอง data.json ที่มีเนื้อหาต่อไปนี้:

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

วิธีที่ 1: การแปลงพื้นฐานโดยใช้ ConvertFrom-Json และ Export-Csv

ตอนนี้เรามาดูวิธีแปลงไฟล์ JSON เป็น CSV โดยใช้ ConvertFrom-Json และ Export-Csv

# 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: ขั้นแรก ให้โหลดข้อมูล JSON ลงในตัวแปร PowerShell
  2. แปลง JSON เป็น PowerShell Object: ใช้ cmdlet ConvertFrom-Json
  3. ส่งออกเป็น CSV: ใช้ cmdlet Export-Csv เพื่อบันทึกข้อมูลในรูปแบบ CSV

เมื่อคุณรันสคริปต์ PowerShell ข้างต้นแล้ว สคริปต์จะสร้างไฟล์ CSV data.csv โดยมีเนื้อหาดังต่อไปนี้:

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

ฉันรันสคริปต์ PowerShell ข้างต้น และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

ตรวจสอบวิธีการแปลงสตริงเป็น JSON ใน PowerShell

วิธีที่ 2: แปลง Nested JSON เป็น CSV ใน PowerShell

โครงสร้าง JSON ที่ซ้อนกันอาจซับซ้อนกว่าในการแปลง ในกรณีเช่นนี้ คุณอาจต้องทำให้ข้อมูล JSON เรียบขึ้นก่อนที่จะแปลงเป็น CSV

พิจารณาข้อมูล JSON ที่ซ้อนกันต่อไปนี้:

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

ในการจัดการสิ่งนี้ คุณสามารถใช้ Select-Object cmdlet เพื่อทำให้โครงสร้างเรียบขึ้น:

# 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

สิ่งนี้จะสร้างไฟล์ CSV nested_data.csv โดยมีเนื้อหาดังต่อไปนี้:

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

นี่คือผลลัพธ์ในภาพหน้าจอด้านล่าง:

ตรวจสอบวิธีเขียน JSON ลงในไฟล์ใน PowerShell

วิธีที่ 3: การใช้ฟังก์ชัน PowerShell แบบกำหนดเอง

สำหรับสถานการณ์ที่ซับซ้อนมากขึ้น คุณอาจต้องการสร้างฟังก์ชัน PowerShell แบบกำหนดเองเพื่อจัดการการแปลง สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณต้องการทำการแปลงบ่อยครั้งหรือจัดการโครงสร้าง JSON ต่างๆ

นี่คือตัวอย่าง

ต่อไปนี้เป็นฟังก์ชันที่กำหนดเองในการแปลง JSON เป็น CSV:

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"

ฟังก์ชันนี้ใช้เส้นทางไปยังไฟล์ JSON และเส้นทางที่คุณต้องการบันทึกไฟล์ CSV โดยจะจัดการโครงสร้างที่ซ้อนกันโดยการทำให้โครงสร้างเรียบก่อนที่จะส่งออกเป็น CSV

บทสรุป

ในบทช่วยสอนนี้ ฉันได้อธิบายวิธีแปลง JSON เป็น CSV ใน PowerShell โดยใช้ ConvertFrom-Json และ Export-Csv นอกจากนี้ ฉันได้อธิบายวิธีการแปลง json ที่ซ้อนกันเป็น CSV ใน PowerShell

บทความที่เกี่ยวข้อง