约 2037 字

约 10 分钟

#PowerShell 的 ConvertFrom-Json 命令

ConvertFrom-Json
    [-InputObject] <String>
    [-AsHashtable]
    [-DateKind <JsonDateKind>]
    [-Depth <Int32>]
    [-NoEnumerate]
    [<CommonParameters>]

功能

将 JSON 格式的字符串转换为 PowerShell 对象。

类型

Cmdlet,属于 Microsoft.PowerShell.Utility。

参数

  • [-InputObject] <String> - 要转换的 JSON 字符串;位置 0
  • -AsHashtable - 转换为哈希表而不是 PSCustomObject,可保留键排序并处理特殊键名
  • -Depth <Int32> - 允许的最大 JSON 深度,默认值为 1024
  • -NoEnumerate - 将数组作为单个对象输出,而不是逐项枚举
  • -DateKind <JsonDateKind> - 控制日期字符串的转换方式,可选 Default、Local、Utc、Offset、String

#示例

解析 JSON 字符串

> '{"Name":"Alice","Age":30}' | ConvertFrom-Json
Name  Age
----  ---
Alice  30
  • 属性可以直接通过点号访问。

访问嵌套属性

> $json = '{"user":{"name":"Alice","roles":["admin","dev"]}}'
> $obj = $json | ConvertFrom-Json
> $obj.user.name
> $obj.user.roles
Alice
admin
dev
  • 数组属性会被展开输出,可用 -NoEnumerate 保持数组整体。

解析 Web API 响应

> $resp = Invoke-WebRequest -Uri 'https://api.github.com/repos/PowerShell/PowerShell'
> ($resp.Content | ConvertFrom-Json).stargazers_count
  • Invoke-WebRequest 的 Content 是字符串,通常需要再转换为对象。

转换为哈希表

> '{"a":1,"b":2}' | ConvertFrom-Json -AsHashtable
Name                           Value
----                           -----
a                              1
b                              2
  • -AsHashtable 适合按键动态访问或处理键名大小写冲突。

保持数组完整

> '[1,2,3]' | ConvertFrom-Json -NoEnumerate
  • -NoEnumerate 会把整个 JSON 数组作为单个对象返回,便于后续 ConvertTo-Json 往返。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2