Invoke-RestMethod 未正确传递有效负载中的 System.Object[] 字段
Invoke-RestMethod not passing System.Object[] field in the payload correctly
json 有效负载如下所示:
{
"clients": [
{
"scope": "scope1",
"claim": "scope1",
"id": ["123", "567"]
},
{
"scope": "scope2",
"claim": "claim2",
"id": ["321", "765"]
}
]
}
> $inputjson = (((get-content .\inputfile.json) -Join " " ) | convertfrom-json )
> echo $inputjson
clients
-------
{@{scope=scope1; claim=scope1; id=System.Object[]}, @{scope=scope2; claim=claim2; id=System.Object[]}}
能够通过访问 $inputjson.clients[0].id
查看 id 值,但是在 $inputjson
中使用 id=System.Object[]
的有效载荷,API 不认识它。我正在使用 Invoke-RestMethod
到 POST 有效载荷到 API。
知道如何解析有效负载中的 id=System.Object[]
,以便 API 正确识别它吗?
顺便说一句,API 使用 cURL 命令识别相同的输入 json(原样)。
不是使用 ConvertFrom-Json
cmdlet 和 posting .NET 对象将 JSON 转换为 .NET 对象,您可以 post 普通 JSON像这样:
$myJson = @"
{
"clients": [
{
"scope": "scope1",
"claim": "scope1",
"id": ["123", "567"]
},
{
"scope": "scope2",
"claim": "claim2",
"id": ["321", "765"]
}
]
}
"@
Invoke-RestMethod -Uri "" -Method Post -Body $myJson -ContentType "application/json"
如果您想处理从文件中读取的 JSON,在 post 处理它之前,您可以像以前那样转换它并将其转换回普通 JSON.根据您的 PowerShell 版本,在从 JSON.
转换或转换为 时,您可能需要使用 -Depth
参数
json 有效负载如下所示:
{
"clients": [
{
"scope": "scope1",
"claim": "scope1",
"id": ["123", "567"]
},
{
"scope": "scope2",
"claim": "claim2",
"id": ["321", "765"]
}
]
}
> $inputjson = (((get-content .\inputfile.json) -Join " " ) | convertfrom-json )
> echo $inputjson
clients
-------
{@{scope=scope1; claim=scope1; id=System.Object[]}, @{scope=scope2; claim=claim2; id=System.Object[]}}
能够通过访问 $inputjson.clients[0].id
查看 id 值,但是在 $inputjson
中使用 id=System.Object[]
的有效载荷,API 不认识它。我正在使用 Invoke-RestMethod
到 POST 有效载荷到 API。
知道如何解析有效负载中的 id=System.Object[]
,以便 API 正确识别它吗?
顺便说一句,API 使用 cURL 命令识别相同的输入 json(原样)。
不是使用 ConvertFrom-Json
cmdlet 和 posting .NET 对象将 JSON 转换为 .NET 对象,您可以 post 普通 JSON像这样:
$myJson = @"
{
"clients": [
{
"scope": "scope1",
"claim": "scope1",
"id": ["123", "567"]
},
{
"scope": "scope2",
"claim": "claim2",
"id": ["321", "765"]
}
]
}
"@
Invoke-RestMethod -Uri "" -Method Post -Body $myJson -ContentType "application/json"
如果您想处理从文件中读取的 JSON,在 post 处理它之前,您可以像以前那样转换它并将其转换回普通 JSON.根据您的 PowerShell 版本,在从 JSON.
转换或转换为 时,您可能需要使用-Depth
参数