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

จะเขียน JSON ลงในไฟล์ใน PowerShell ได้อย่างไร


ในบทช่วยสอน PowerShell นี้ ฉันจะอธิบายวิธีเขียน JSON ลงในไฟล์ใน PowerShell

หากต้องการเขียน JSON ลงในไฟล์ใน PowerShell คุณสามารถใช้ ConvertTo-Json cmdlet เพื่อแปลงออบเจ็กต์ PowerShell เป็นสตริง JSON จากนั้นส่งออกสตริงนี้ไปยังไฟล์โดยใช้ Out -ไฟล์ หรือ ชุดเนื้อหา ตัวอย่างเช่น:

$object | ConvertTo-Json | Set-Content -Path 'file.json'

แนวทางนี้ง่ายและมีประสิทธิภาพสำหรับสถานการณ์ส่วนใหญ่ที่คุณต้องการบันทึกข้อมูล JSON จาก PowerShell ลงในไฟล์

วิธีที่ 1: ConvertTo-Json และ Out-File

หากต้องการเขียน JSON ลงในไฟล์ใน PowerShell คุณสามารถใช้ ConvertTo-Json cmdlet ซึ่งจะแปลงออบเจ็กต์ PowerShell ให้เป็นสตริงที่จัดรูปแบบ JSON เมื่อแปลงแล้ว คุณสามารถส่งออกสตริงไปยังไฟล์ได้โดยใช้ Out-File cmdlet

นี่เป็นตัวอย่างง่ายๆ:

# Create a PowerShell object
$person = @{
    FirstName = 'James'
    LastName = 'Karley'
    Age = 30
}

# Convert the object to a JSON string
$json = $person | ConvertTo-Json

# Write the JSON string to a file
$json | Out-File -FilePath 'C:\MyFolder\person.json'

สคริปต์นี้สร้างแฮชเทเบิลที่เป็นตัวแทนของบุคคล แปลงเป็น JSON และเขียนลงในไฟล์ชื่อ person.json

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์โดยใช้โค้ด VS

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

วิธีที่ 2: ConvertTo-Json และ Set-Content

อีกทางเลือกหนึ่งสำหรับ Out-File คือ Set-Content cmdlet ใน PowerShell ซึ่งจะมีประโยชน์อย่างยิ่งเมื่อคุณต้องการให้แน่ใจว่าการเข้ารหัสไฟล์ได้รับการตั้งค่าอย่างถูกต้อง เช่น UTF-8 ซึ่งมักจำเป็นสำหรับข้อมูล JSON

# Convert the object to a JSON string
$json = $person | ConvertTo-Json

# Write the JSON string to a file with UTF8 encoding
$json | Set-Content -Path 'person.json' -Encoding UTF8

วิธีการนี้คล้ายกับวิธีก่อนหน้า แต่ระบุการเข้ารหัสเพื่อป้องกันปัญหาใดๆ เกี่ยวกับการแสดงอักขระในไฟล์ JSON

วิธีที่ 3: การใช้ Add-Content สำหรับการผนวกข้อมูล

หากคุณต้องการผนวกข้อมูล JSON เข้ากับไฟล์ที่มีอยู่ใน PowerShell คุณสามารถใช้ Add-Content cmdlet สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อบันทึกหรือเพิ่มอาร์เรย์ JSON ในไฟล์

# Additional person object
$additionalPerson = @{
    FirstName = 'Jane'
    LastName = 'Smith'
    Age = 25
}

# Convert the additional person to JSON
$additionalJson = $additionalPerson | ConvertTo-Json

# Append the JSON string to the existing file
$additionalJson | Add-Content -Path 'C:\MyFolder\person.json'

สคริปต์นี้จะเพิ่มเนื้อหา เพิ่มเติมJson ลงในไฟล์ people.json โดยไม่เขียนทับข้อมูลที่มีอยู่

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์ PowerShell โดยใช้โค้ด VS

วิธีที่ 4: Export-Clixml สำหรับวัตถุที่ซับซ้อน

สำหรับออบเจ็กต์ที่ซับซ้อนมากขึ้นซึ่งอาจมีคุณสมบัติที่ ConvertTo-Json ไม่สามารถประมวลผลได้ คุณสามารถใช้ Export-Clixml cmdlet นี้จะส่งออกออบเจ็กต์ PowerShell ไปยังไฟล์ XML ซึ่งสามารถอ่านกลับได้ด้วย Import-Clixml

# Export the object to an XML file
$person | Export-Clixml -Path 'person.clixml'

แม้ว่าจะไม่ใช่ JSON อย่างเคร่งครัด แต่วิธีนี้ก็รวมไว้เพื่อความสมบูรณ์เนื่องจากสามารถจัดการข้อมูลซีเรียลไลซ์ที่ซับซ้อนซึ่ง JSON อาจไม่สามารถทำได้

วิธีที่ 5: การใช้ไลบรารี JSON.net

เพื่อการควบคุมกระบวนการซีเรียลไลซ์ JSON อย่างสมบูรณ์ คุณสามารถใช้ไลบรารี Newtonsoft JSON.net ไลบรารีนี้มีคุณสมบัติมากกว่า PowerShell cmdlets ในตัว

ขั้นแรก คุณต้องติดตั้งไลบรารี:

# Install the Newtonsoft.Json library
Install-Package -Name Newtonsoft.Json

จากนั้น คุณสามารถใช้มันเพื่อทำให้เป็นอนุกรมและเขียนข้อมูล JSON ได้:

# Load the Newtonsoft.Json assembly
Add-Type -Path 'C:\path\to\Newtonsoft.Json.dll'

# Serialize the object to JSON using JsonConvert
$json = [Newtonsoft.Json.JsonConvert]::SerializeObject($person)

# Write the JSON string to a file
Set-Content -Path 'person.json' -Value $json -Encoding UTF8

วิธีการนี้มีประโยชน์อย่างยิ่งเมื่อต้องจัดการกับโครงสร้าง JSON ที่ซับซ้อน หรือเมื่อคุณต้องการปรับแต่งกระบวนการซีเรียลไลซ์นอกเหนือจากที่ cmdlet ConvertTo-Json นำเสนอ

บทสรุป

PowerShell นำเสนอหลายวิธีในการเขียนข้อมูล JSON ลงในไฟล์ ด้วยการใช้ ConvertTo-Json cmdlet กับ Out-File หรือ Set-Content คุณสามารถซีเรียลไลซ์และบันทึกข้อมูล JSON ได้อย่างง่ายดาย สำหรับการต่อท้ายข้อมูล Add-Content คือ cmdlet ที่ใช้งานสะดวก และสำหรับสถานการณ์ที่ซับซ้อนที่สุด การใช้ประโยชน์จากไลบรารี JSON.net มอบความยืดหยุ่นและพลังให้กับคุณในการจัดการการจัดลำดับ JSON ใน PowerShell ได้อย่างแม่นยำ

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีเขียน JSON ลงในไฟล์ใน PowerShell โดยใช้วิธีต่างๆ

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