Powershell Invoke-WebRequest returns 对象数组,但处理时好像只有 1 个
Powershell Invoke-WebRequest returns array of objects but processes as if there is only 1
$path = "https://api.statuspage.io/v1/pages/$page_id/$endpoint"
$req = Invoke-WebRequest -Uri $path -Method GET
此请求 returns 对象数组 (50+)。我可以通过 运行ning a Write-Host $req
看到这个
问题是,当我尝试
foreach($i in $req) {
Write-Host $i
}
我得到了整个对象。同样,如果我 运行 Write-Host $req.length
我得到 1
。给出了什么?
此外,没有办法运行像
$global:res = ConvertFrom-Json $req
因为它已经作为 JSON
返回
如果您的目的是将JSON文本解析为(嵌套)对象([pscustomobject]
图表) 无论如何,您可以简单地 使用 Invoke-RestMethod
rather than Invoke-WebRequest
, because Invoke-RestMethod
has ConvertFrom-Json
内置 ,用某种方式来说:
$path = "https://api.statuspage.io/v1/pages/$page_id/$endpoint"
# Retrieves JSON *and* parses it into objects.
$result = Invoke-RestMethod -Uri $path -Method GET
至于你试过的:
$req = Invoke-WebRequest ...
Invoke-WebRequest
returns 一个 单个 对象,即 BasicHtmlWebResponseObject
(PowerShell [Core] v6+) / HtmlWebResponseObject
(Windows PowerShell) 的实例,它是一个具有元数据的包装器对象,该元数据存储在 .Content
属性.
中收到的响应的 内容
在您的例子中,.Content
包含 JSON 作为 单个字符串 ,ConvertFrom-Json
可以解析为嵌套的 对象(s).
要将此 JSON 字符串解析为一个或多个(可能嵌套的)对象([pscustomobject]
图):
$result = ConvertFrom-Json $req.Content
请注意,即使 $result = ConvertFrom-Json $req
也可以工作,因为当响应对象被隐式 字符串化 时,它会插入其 .Content
[=71] 的值=].
正如 Theo 在评论中指出的那样,您还可以使用管道:
$result = $req | ConvertFrom-Json
$path = "https://api.statuspage.io/v1/pages/$page_id/$endpoint"
$req = Invoke-WebRequest -Uri $path -Method GET
此请求 returns 对象数组 (50+)。我可以通过 运行ning a Write-Host $req
问题是,当我尝试
foreach($i in $req) {
Write-Host $i
}
我得到了整个对象。同样,如果我 运行 Write-Host $req.length
我得到 1
。给出了什么?
此外,没有办法运行像
$global:res = ConvertFrom-Json $req
因为它已经作为 JSON
返回如果您的目的是将JSON文本解析为(嵌套)对象([pscustomobject]
图表) 无论如何,您可以简单地 使用 Invoke-RestMethod
rather than Invoke-WebRequest
, because Invoke-RestMethod
has ConvertFrom-Json
内置 ,用某种方式来说:
$path = "https://api.statuspage.io/v1/pages/$page_id/$endpoint"
# Retrieves JSON *and* parses it into objects.
$result = Invoke-RestMethod -Uri $path -Method GET
至于你试过的:
$req = Invoke-WebRequest ...
Invoke-WebRequest
returns 一个 单个 对象,即 BasicHtmlWebResponseObject
(PowerShell [Core] v6+) / HtmlWebResponseObject
(Windows PowerShell) 的实例,它是一个具有元数据的包装器对象,该元数据存储在 .Content
属性.
在您的例子中,.Content
包含 JSON 作为 单个字符串 ,ConvertFrom-Json
可以解析为嵌套的 对象(s).
要将此 JSON 字符串解析为一个或多个(可能嵌套的)对象([pscustomobject]
图):
$result = ConvertFrom-Json $req.Content
请注意,即使 $result = ConvertFrom-Json $req
也可以工作,因为当响应对象被隐式 字符串化 时,它会插入其 .Content
[=71] 的值=].
正如 Theo 在评论中指出的那样,您还可以使用管道:
$result = $req | ConvertFrom-Json