อ่าน แก้ไข และแยกวิเคราะห์ไฟล์ JSON (Object) ด้วย PowerShell
JSON เป็นรูปแบบข้อความยอดนิยมสำหรับการแสดงและส่งข้อมูลที่มีโครงสร้างตามไวยากรณ์อ็อบเจ็กต์ JavaScript PowerShell มีสอง cmdlets ที่อนุญาตให้คุณทำงานกับรูปแบบข้อมูล JSON:
ConvertFrom-Jsonและ
ConvertTo-Json- มาดูกันว่าคุณสามารถใช้ PowerShell เพื่อสร้าง อ่าน หรือแก้ไขออบเจ็กต์ JSON และบันทึกลงในไฟล์ได้อย่างไร
ข้อมูลในรูปแบบ JSON จะแสดงเป็นคู่ คีย์:ค่า (อนุญาตให้ซ้อนคุณสมบัติได้) สมมติว่าคุณต้องการเขียนข้อมูล JSON ลงในไฟล์ สร้างออบเจ็กต์ข้อมูลที่มีโครงสร้าง JSON:
$obj = @{
Name = "Henry"
Roles = @{
AD = "Admin"
SQL = "Report"
}
"Company" = "a-d"
}
ตอนนี้แปลงออบเจ็กต์เป็นรูปแบบ JSON และบันทึกเป็นไฟล์ที่มีนามสกุล .json:
$json = $obj | ConvertTo-Json
$json | Set-Content -Path C:\PS\userroles.json
ตอนนี้คุณสามารถอ่านไฟล์ JSON ได้แล้ว:
$json = Get-Content -Path C:\PS\userroles.json -Raw | ConvertFrom-Jsonแสดงรายการคุณสมบัติออบเจ็กต์ JSON ทั้งหมด:
$json|flหรือคุณสามารถรับค่าของคุณสมบัติเฉพาะในออบเจ็กต์ JSON ได้:
$json.roles.sqlใช้คำสั่ง Add-Member เพื่อเพิ่มคุณสมบัติใหม่ให้กับออบเจ็กต์ JSON:
$json| Add-Member -MemberType NoteProperty -Name "Email" -Value "[email "ใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนค่าเดียวในออบเจ็กต์ JSON และบันทึกลงในไฟล์:
$json.roles.sql='Admin'
$json|ConvertTo-Json| Set-Content -Path C:\PS\userroles.jsonลบคุณสมบัติวัตถุ JSON:
$json.PSObject.Properties.Remove("Email")ด้วยการใช้ Invoke-WebRequest PowerShell cmdlet คุณสามารถเข้าถึง JSON HTTP API เพื่อรับข้อมูลจากบริการเว็บภายนอก (ไซต์) ตัวอย่างเช่น หากต้องการแสดงรายการระเบียน A ที่ส่งคืนโดยบริการ DNS ของ Google ในรูปแบบ JSON ให้ทำดังนี้
$site="a-d.site"
$rawresp=Invoke-WebRequest "https://dns.google/resolve?name=$site&type=A"
$rawjson = ConvertFrom-Json -InputObject $rawresp.Content
$rawjson.answer.data
