ConvertTo-Json
将对象转换为 JSON 格式的字符串。
语法
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[<CommonParameters>]
说明
ConvertTo-Json cmdlet 可将任何对象转换为 JavaScript Object Notation (JSON) 格式的字符串。 这些属性将转换为字段名称,字段名称将转换为属性值,并将删除这些方法。
然后,可以使用 ConvertFrom-Json cmdlet 将 JSON 格式的字符串转换为 JSON 对象,该对象可在Windows PowerShell中轻松管理。
许多网站使用 JSON(而不是 XML)来序列化用于在服务器和基于 Web 的应用之间进行通信的数据。
此 cmdlet 是在 Windows PowerShell 3.0 中引入的。
示例
示例 1
PS C:\> (Get-UICulture).Calendar | ConvertTo-Json
{
"MinSupportedDateTime": "\/Date(-62135596800000)\/",
"MaxSupportedDateTime": "\/Date(253402300799999)\/",
"AlgorithmType": 1,
"CalendarType": 1,
"Eras": [
1
],
"TwoDigitYearMax": 2029,
"IsReadOnly": false
}
此示例使用 ConvertTo-Json cmdlet 将 GregorianCalendar 对象转换为 JSON 格式的字符串。
示例 2
PS C:\> @{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Admin":"True","Account":"User01","Domain":"Domain01"}
此示例演示使用 -Compress
ConvertTo-Json 参数的效果。
压缩仅影响字符串的外观,而不会影响其有效性。
示例 3
PS C:\> Get-Date | Select-Object -Property * | ConvertTo-Json
{
"DisplayHint": 2,
"DateTime": "Friday, January 13, 2012 8:06:16 PM",
"Date": "\/Date(1326441600000)\/",
"Day": 13,
"DayOfWeek": 5,
"DayOfYear": 13,
"Hour": 20,
"Kind": 2,
"Millisecond": 221,
"Minute": 6,
"Month": 1,
"Second": 16,
"Ticks": 634620819762218083,
"TimeOfDay": {
"Ticks": 723762218083,
"Days": 0,
"Hours": 20,
"Milliseconds": 221,
"Minutes": 6,
"Seconds": 16,
"TotalDays": 0.83768775241087956,
"TotalHours": 20.104506057861109,
"TotalMilliseconds": 72376221.8083,
"TotalMinutes": 1206.2703634716668,
"TotalSeconds": 72376.22180829999
},
"Year": 2012
}
此示例使用 ConvertTo-Json cmdlet 将 System.DateTime 对象从 Get-Date cmdlet 转换为 JSON 格式的字符串。 该命令使用 Select-Object cmdlet 获取 DateTime 对象属性的所有 *
() 。 该输出显示 ConvertTo-Json 返回的 JSON 字符串。
示例 4
PS C:\> Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Saturday, October 13, 2018 3:28:40 AM
Date : 10/13/2018 12:00:00 AM
Day : 13
DayOfWeek : 6
DayOfYear : 286
Hour : 3
Kind : 2
Millisecond : 346
Minute : 28
Month : 10
Second : 40
Ticks : 636749981203464381
TimeOfDay : @{Ticks=125203464381; Days=0; Hours=3; Milliseconds=346; Minutes=28; Seconds=40;
TotalDays=0.14491141710763888; TotalHours=3.4778740105833332; TotalMilliseconds=12520346.4381;
TotalMinutes=208.67244063500002; TotalSeconds=12520.3464381}
Year : 2018
此示例演示如何使用 ConvertTo-Json 和 ConvertFrom-Json cmdlet 将对象转换为 JSON 字符串和 JSON 对象。
参数
-Compress
省略输出字符串中的空格和缩进格式。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
指定 JSON 表示形式中包括多少级别的已包含对象。 默认值为 2。
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要转换为 JSON 格式的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。 你还可以通过管道将对象传递给 ConvertTo-Json。
InputObject 参数是必需的,但其值可以为 null, ($null
) 或空字符串。
当输入对象为 $null
时, ConvertTo-Json 不会生成任何输出。
当输入对象是空字符串时,ConvertTo-Json 将返回空字符串。
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
输入
你可以通过管道将任何对象传递给 ConvertTo-Json。
输出
备注
- ConvertTo-Json cmdlet 是使用 JavaScriptSerializer 类实现的。