约 1871 字

约 9 分钟

#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

#示例

将对象转换为 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"
  • 默认情况下枚举会被序列化为其数值。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2