ConvertTo-Json
將物件轉換成 JSON 格式的字串。
語法
Default (預設值)
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Description
ConvertTo-Json Cmdlet 會將任何 .NET 物件轉換成 JavaScript 物件表示法 (JSON) 格式的字串。 屬性會轉換成域名、域值會轉換成屬性值,而且會移除方法。
備註
從 PowerShell 7.2 開始,DateTime 和 String 物件的擴充類型系統屬性不再串行化,而且只會將簡單物件轉換成 JSON 格式
接著,您可以使用 ConvertFrom-Json Cmdlet,將 JSON 格式的字串轉換成 JSON 物件,這可在 PowerShell 中輕鬆管理。
許多網站會使用 JSON 而不是 XML 來串行化伺服器與 Web 應用程式之間的通訊資料。
從 PowerShell 7.1 起,如果輸入物件的深度超過命令指定的深度,ConvertTo-Json 就會發出警告。 這可防止轉換物件時遺失不必要的數據。
從 PowerShell 7.5-preview.3 起,ConvertTo-Json 可以將 BigInteger 值串行化為原始 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
}
此命令會使用 ConvertTo-Json Cmdlet,將 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 switch 參數搭配 Cmdlet 的輸出。 您可以看到輸出的第二個部分會包裝在數位括弧中。
範例 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 來取得 * 物件之屬性的所有 ()。 輸出會顯示 ConvertTo-Json 傳回的 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
此範例示範如何使用 ConvertTo-Json 和 ConvertFrom-Json Cmdlet,將物件轉換成 JSON 字串和 JSON 物件。
參數
-AsArray
輸出陣列括弧中的物件,即使輸入是單一物件也一樣。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Compress
省略輸出字串中的空格符和縮排格式。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Depth
指定 JSON 表示法中包含多少個自主物件的層級。 值可以是從 0 到 100的任何數位。 預設值是 2。 如果輸入物件中的層級數目超過這個數位,ConvertTo-Json 會發出警告。
參數屬性
| 類型: | Int32 |
| 預設值: | 2 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-EnumsAsStrings
提供替代的串行化選項,可將所有列舉轉換成其字串表示。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-EscapeHandling
控制在產生的 JSON 輸出中逸出特定字元的方式。 根據預設,只會逸出控制字元(例如換行符)。
可接受的值為:
- 預設值 - 只會逸出控制字元。
- EscapeNonAscii - 所有非 ASCII 和控制字元都會逸出。
- EscapeHtml - HTML (
<、>、&、'、")和控制字元會逸出。
此參數是在 PowerShell 6.2 中引進的。
參數屬性
| 類型: | Newtonsoft.Json.StringEscapeHandling |
| 預設值: | Default |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定要轉換成 JSON 格式的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。 您也可以使用管線將 物件傳送至 ConvertTo-Json。
InputObject 參數是必要的,但其值可以是 null ($null) 或空字串。
當輸入物件 $null時,ConvertTo-Json 會傳回 null的 JSON 表示法。 當輸入對像是空字串時,ConvertTo-Json 會傳回空字串的 JSON 表示法。
參數屬性
| 類型: | Object |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
Object
您可以將任何物件通過管道傳遞至此命令工具。
輸出
String
此 Cmdlet 會傳回字串,代表轉換成 JSON 字串的輸入物件。
備註
ConvertTo-Json Cmdlet 是使用 Newtonsoft Json.NET來實作。