如何从 HtmlWebResponseObject 解析 JSON

How to parse JSON from HtmlWebResponseObject

这是我在 PowerShell 中编写的 GET 请求:

$registry = Invoke-WebRequest -Uri "https://${web_ip}/v1/registry/" -Method GET -Headers @{Authorization="token $token"} -ContentType "application/json"
Write-Host $registry

它将显示如下内容:

[{"user": "corey", "project": "corey", "registry": "corey-registry"}]

我试图解析响应以从键“registry”中获取值,但它并没有像我预期的那样工作。

# to get the first value in the list
$registry[0] => the output is the same as listed above

# check the type
$registry.GetType() => Microsoft.PowerShell.Commands.HtmlWebResponseObject

我不知道如何将 HtmlWebResponseObject 转换为 json 或列表对象,我也不知道如何在代码中获取值“corey-registry”,这是我的主要问题。

我卡在这个问题上了,有什么想法吗?如果有任何帮助,我将不胜感激。

响应具有将其转换为对象的 Content property which contains the raw JSON. Use ConvertFrom-Json。然后您可以轻松访问 registry 属性.

这里有一个(相当冗长的)例子和一些解释:

# get response
$response = Invoke-WebRequest -Uri "https://${web_ip}/v1/registry/" -Method GET -Headers @{Authorization="token $token"} -ContentType "application/json"
# get raw JSON
$json = $response.Content
# deserialize to object
$obj = ConvertFrom-Json $json
# you can now easily access the properties
$registry = $obj.registry