#PowerShell 的 ConvertTo-Json 命令
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
功能
将 .NET 对象转换为 JSON 格式的字符串。
类型
Cmdlet,属于 Microsoft.PowerShell.Utility。
参数
[-InputObject] <Object>- 要转换的对象;位置 0-Depth <Int32>- 序列化的最大深度,默认值为 2-Compress- 省略空白和缩进,输出紧凑的 JSON-EnumsAsStrings- 将枚举值转换为字符串,而不是数值-AsArray- 即使输入是单个对象,也输出为 JSON 数组-EscapeHandling <StringEscapeHandling>- 控制字符转义方式,可选Default、EscapeNonAscii、EscapeHtml
默认深度只有 2,嵌套更深的属性会被截断为类型名称或空值,需要时显式提高
-Depth。
#示例
将对象转换为 JSON
> [pscustomobject]@{ Name = 'Alice'; Age = 30 } | ConvertTo-Json
{
"Name": "Alice",
"Age": 30
}
- 管道输入会作为
-InputObject处理。
输出紧凑 JSON
> $data = @{ Name = 'Alice'; Tags = @('admin', 'dev') }
> $data | ConvertTo-Json -Compress
{"Name":"Alice","Tags":["admin","dev"]}
-Compress适合网络传输或写入单行日志。
控制嵌套深度
> $obj = @{ Level1 = @{ Level2 = @{ Level3 = 'value' } } }
> $obj | ConvertTo-Json -Depth 5
- 未指定足够深度时,深层内容可能无法完整序列化。
强制输出数组
> [pscustomobject]@{ Name = 'Alice' } | ConvertTo-Json -AsArray
[
{
"Name": "Alice"
}
]
-AsArray可保证单个对象与多个对象的输出结构一致。
将枚举输出为字符串
> [System.DayOfWeek]::Monday | ConvertTo-Json -EnumsAsStrings
"Monday"
- 默认情况下枚举会被序列化为其数值。