#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
默认返回
PSCustomObject;当 JSON 含有空字符串键或不区分大小写的重复键时,-AsHashtable更可靠。
#示例
解析 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往返。