แปลงเป็น 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