POST的JSON有效负载作为“发送”;System.Collections.Hashtable“;而不是实际数据
我正在使用Powershell动态创建数据的有效负载,以便打包并在RESTAPI Post请求中发送 我的问题是,当API接收到它时,它被列为System.Collections.Hashtable。很明显,我在格式化数据的过程中犯了一些错误,但似乎没有任何东西适合我 下面是API接收它的方式POST的JSON有效负载作为“发送”;System.Collections.Hashtable“;而不是实际数据,json,powershell,post,hash,payload,Json,Powershell,Post,Hash,Payload,我正在使用Powershell动态创建数据的有效负载,以便打包并在RESTAPI Post请求中发送 我的问题是,当API接收到它时,它被列为System.Collections.Hashtable。很明显,我在格式化数据的过程中犯了一些错误,但似乎没有任何东西适合我 下面是API接收它的方式 { "properties": { "recip_test": [ "System.C
{
"properties": {
"recip_test": [
"System.Collections.Hashtable",
"System.Collections.Hashtable"
],
"offending_shifts": "MAX, OnCall-Default Shift",
"group_name": "Alarmpoint Administrators"
}
}
我尝试了转换为Json以及+=()/.Add(),但这些似乎都不起作用
我在一个数据数组中循环,该数组表示该数组中的ID。对于该数组(循环中)中的每个项,我需要创建一个如下所示的哈希表
$recipient = @{
'id' = $y
'recipientType' = 'PERSON'
}
然后将该散列放入收件人的有效负载字段中,然后需要在POST请求中传递该字段。下面是完整的代码
foreach($x in $collated_group_data) {
if ($x.group_name -ne 'Alarmpoint Administrators') {
next
}
$uuid = "***********/triggers?apiKey=**************"
$webhook_path = "$base/api/integration/1/functions/$uuid"
$payload = @{
'properties' = @{
'group_name' = $x.group_name
'offending_shifts' = $x.offending_shifts.Substring(0, $x.offending_shifts.Length - 2)
'recipients' = @()
}
}
foreach($y in $x.supervisor_ids) {
$payload.properties.recipients += @{'id' = $y; 'recipientType' = 'PERSON'}
}
$payload = $payload | ConvertTo-Json
Invoke-WebRequest -Uri $webhook_path -Method POST -Body $payload -ContentType 'application/json'
}在这种情况下,必须在
ConvertTo Json
命令中使用值为3或更大的-Depth
参数
$payload = $payload | ConvertTo-Json -Depth 3
默认情况下,
-Depth
参数设置为2。该参数指定JSON表示中包含多少级别的包含对象。示例中有三个级别。如果在converttojson
上使用-Depth
参数,是否存在相同的问题?您可以使用比默认值(2)更高的数字:converttojson-Depth 100
。这就解决了它!!谢谢