You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从HtmlWebResponseObject解析JSON?PowerShell技术求助

解决方法:解析Invoke-WebRequest返回的JSON响应

嘿,我完全懂你的困扰!Invoke-WebRequest返回的Microsoft.PowerShell.Commands.HtmlWebResponseObject并不是直接可用的JSON数据——它是一个包装了响应元数据(比如状态码、请求头)和实际响应内容的对象。你直接操作整个对象或者用索引[0]自然拿不到想要的registry值,得先把JSON内容提取出来再转换成PowerShell能直接操作的对象。

下面是具体的解决步骤:

1. 提取JSON内容并转换为PowerShell对象

HtmlWebResponseObject的Content属性存储了服务器返回的原始JSON字符串,我们可以用ConvertFrom-Json把它转换成PowerShell可操作的数组/对象:

# 将响应内容转换为PowerShell对象
$registryData = $registry.Content | ConvertFrom-Json

2. 访问目标字段

现在$registryData就是一个包含你数据的数组了,直接用索引和属性名就能拿到registry对应的值:

# 获取第一个元素的registry值
$desiredRegistry = $registryData[0].registry
Write-Host $desiredRegistry  # 输出:corey-registry

完整示例代码

把整个流程整合起来就是这样:

# 发起GET请求
$registry = Invoke-WebRequest -Uri "https://${web_ip}/v1/registry/" -Method GET -Headers @{Authorization="token $token"} -ContentType "application/json"

# 解析JSON响应为PowerShell对象
$registryData = $registry.Content | ConvertFrom-Json

# 提取目标值
$targetRegistry = $registryData[0].registry

# 输出结果
Write-Host "获取到的registry值:$targetRegistry"

额外提示:处理多个数据项

如果服务器返回的是多个对象的数组,你还可以用循环遍历所有的registry值:

foreach ($item in $registryData) {
    Write-Host "用户$($item.user)对应的registry:$($item.registry)"
}

内容的提问来源于stack exchange,提问作者Corey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:27:41