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

อ่าน แก้ไข และแยกวิเคราะห์ไฟล์ 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