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

แปลงเป็น Json (Microsoft.PowerShell.Utility)


ConvertTo-Json

โมดูล :
Microsoft.PowerShell.Utility

แปลงวัตถุให้เป็นสตริงที่จัดรูปแบบ JSON

ไวยากรณ์

ConvertTo-Json
              [-InputObject] <Object>
              [-Depth <Int32>]
              [-Compress]
              [-EnumsAsStrings]
              [-AsArray]
              [-EscapeHandling <StringEscapeHandling>]
              [<CommonParameters>]

คำอธิบาย

ConvertTo-Json cmdlet จะแปลงวัตถุ .NET ใดๆ ให้เป็นสตริงในรูปแบบ JavaScript Object Notation (JSON) คุณสมบัติจะถูกแปลงเป็นชื่อฟิลด์ ค่าของฟิลด์จะถูกแปลงเป็นค่าคุณสมบัติ และวิธีการจะถูกลบออก

บันทึก

ใน PowerShell 7.2 คุณสมบัติ Extended Type System ของอ็อบเจ็กต์ DateTime และ String จะไม่ถูกทำให้เป็นอนุกรมอีกต่อไป และมีเพียงอ็อบเจ็กต์แบบธรรมดาเท่านั้นที่ถูกแปลงเป็นรูปแบบ JSON

จากนั้นคุณสามารถใช้ ConvertFrom-Json cmdlet เพื่อแปลงสตริงที่จัดรูปแบบ JSON เป็นวัตถุ JSON ซึ่งสามารถจัดการได้อย่างง่ายดายใน PowerShell

เว็บไซต์หลายแห่งใช้ JSON แทน XML เพื่อทำให้ข้อมูลเป็นอนุกรมสำหรับการสื่อสารระหว่างเซิร์ฟเวอร์และแอปบนเว็บ

ใน PowerShell 7.1 ConvertTo-Json จะส่งคำเตือนหากความลึกของออบเจ็กต์อินพุตเกินความลึกที่ระบุสำหรับคำสั่ง วิธีนี้จะช่วยป้องกันการสูญเสียข้อมูลที่ไม่พึงประสงค์เมื่อแปลงออบเจ็กต์

cmdlet นี้ถูกนำมาใช้ใน Windows PowerShell 3.0

ตัวอย่าง

ตัวอย่างที่ 1

(Get-UICulture).Calendar | ConvertTo-Json

{
  "MinSupportedDateTime": "0001-01-01T00:00:00",
  "MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
  "AlgorithmType": 1,
  "CalendarType": 1,
  "Eras": [
    1
  ],
  "TwoDigitYearMax": 2029,
  "IsReadOnly": true
}

คำสั่งนี้ใช้ cmdlet ConvertTo-Json เพื่อแปลงวัตถุ GregorianCalendar เป็นสตริงที่จัดรูปแบบ JSON

ตัวอย่างที่ 2

Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray

"2021-08-05T16:13:05.6394416-07:00"
[
  "2021-08-05T16:13:05.6421709-07:00"
]

ตัวอย่างนี้แสดงเอาต์พุตจาก ConvertTo-Json cmdlet ที่มีและไม่มีพารามิเตอร์สวิตช์ AsArray คุณจะเห็นว่าส่วนที่สองของเอาต์พุตนั้นอยู่ในวงเล็บอาร์เรย์

ตัวอย่างที่ 3

@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress

{"Domain":"Domain01","Account":"User01","Admin":"True"}

คำสั่งนี้แสดงผลของการใช้พารามิเตอร์ บีบอัด ของ ConvertTo-Json การบีบอัดส่งผลต่อลักษณะที่ปรากฏของสตริงเท่านั้น ไม่ใช่ความถูกต้อง

ตัวอย่างที่ 4

Get-Date | Select-Object -Property * | ConvertTo-Json

{
  "DisplayHint": 2,
  "DateTime": "October 12, 2018 10:55:32 PM",
  "Date": "2018-10-12T00:00:00-05:00",
  "Day": 12,
  "DayOfWeek": 5,
  "DayOfYear": 285,
  "Hour": 22,
  "Kind": 2,
  "Millisecond": 639,
  "Minute": 55,
  "Month": 10,
  "Second": 32,
  "Ticks": 636749817326397744,
  "TimeOfDay": {
    "Ticks": 825326397744,
    "Days": 0,
    "Hours": 22,
    "Milliseconds": 639,
    "Minutes": 55,
    "Seconds": 32,
    "TotalDays": 0.95523888627777775,
    "TotalHours": 22.925733270666665,
    "TotalMilliseconds": 82532639.774400011,
    "TotalMinutes": 1375.54399624,
    "TotalSeconds": 82532.6397744
  },
  "Year": 2018
}

ตัวอย่างนี้ใช้ ConvertTo-Json cmdlet เพื่อแปลงออบเจ็กต์ System.DateTime จาก Get-Date cmdlet เป็นสตริงที่จัดรูปแบบ JSON คำสั่งใช้ Select-Object cmdlet เพื่อรับคุณสมบัติทั้งหมด (*) ของวัตถุ DateTime ผลลัพธ์จะแสดงสตริง JSON ที่ ConvertTo-Json ส่งคืน

ตัวอย่างที่ 5

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json

DisplayHint : 2
DateTime    : October 12, 2018 10:55:52 PM
Date        : 2018-10-12 12:00:00 AM
Day         : 12
DayOfWeek   : 5
DayOfYear   : 285
Hour        : 22
Kind        : 2
Millisecond : 768
Minute      : 55
Month       : 10
Second      : 52
Ticks       : 636749817527683372
TimeOfDay   : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
              TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
              TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year        : 2018

ตัวอย่างนี้แสดงวิธีใช้ cmdlets ConvertTo-Json และ ConvertFrom-Json เพื่อแปลงออบเจ็กต์เป็นสตริง JSON และออบเจ็กต์ JSON

พารามิเตอร์

-AsArray

แสดงผลออบเจ็กต์ในวงเล็บอาร์เรย์ แม้ว่าอินพุตจะเป็นออบเจ็กต์เดี่ยวก็ตาม

พิมพ์ :

SwitchParameter

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Compress

ละเว้นช่องว่างและการจัดรูปแบบเยื้องในสตริงเอาต์พุต

พิมพ์ :

SwitchParameter

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Depth

ระบุจำนวนออบเจ็กต์ที่มีอยู่ซึ่งรวมอยู่ในการแสดง JSON ค่าสามารถเป็นตัวเลขใดก็ได้ตั้งแต่ 0 ถึง 100 ค่าเริ่มต้นคือ 2 ConvertTo-Json ส่งเสียงเตือนหากจำนวนระดับในวัตถุอินพุตเกินจำนวนนี้

พิมพ์ :

Int32

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

2

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-EnumsAsStrings

จัดเตรียมตัวเลือกการทำให้เป็นอนุกรมทางเลือกที่แปลงการแจงนับทั้งหมดเพื่อแสดงสตริง

พิมพ์ :

SwitchParameter

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-EscapeHandling

ควบคุมวิธีการหลีกอักขระบางตัวในเอาต์พุต JSON ที่เป็นผลลัพธ์ ตามค่าเริ่มต้น เฉพาะอักขระควบคุม (เช่น ขึ้นบรรทัดใหม่) เท่านั้นที่จะถูกหลีก

ค่าที่ยอมรับได้คือ:

  • ค่าเริ่มต้น - ยกเว้นเฉพาะอักขระควบคุมเท่านั้น
  • EscapeNonAscii - อักขระที่ไม่ใช่ ASCII และอักขระควบคุมทั้งหมดจะถูกหลีก
  • EscapeHtml - HTML (<, >, &, ', ") และ อักขระควบคุมจะถูกหลีกหนี

พารามิเตอร์นี้ถูกนำมาใช้ใน PowerShell 6.2

พิมพ์ :

Newtonsoft.Json.StringEscapeHandling

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

ค่าเริ่มต้น

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-InputObject

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

จำเป็นต้องมีพารามิเตอร์ InputObject แต่ค่าของพารามิเตอร์อาจเป็นค่าว่าง ($null) หรือสตริงว่างได้ เมื่อวัตถุอินพุตเป็น $null ConvertTo-Json จะส่งกลับการแสดง JSON ของ null เมื่อวัตถุอินพุตเป็นสตริงว่าง ConvertTo-Json ส่งคืนการแสดง JSON ของสตริงว่าง

พิมพ์ :

วัตถุ

ตำแหน่ง:

0

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

False

อินพุต

วัตถุ

คุณสามารถไปป์วัตถุใด ๆ ไปที่ cmdlet นี้

เอาท์พุต

สตริง

cmdlet นี้ส่งคืนสตริงที่แสดงถึงวัตถุอินพุตที่แปลงเป็นสตริง JSON

หมายเหตุ

ConvertTo-Json cmdlet ถูกนำมาใช้โดยใช้ Newtonsoft Json.NET

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