Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
POST的JSON有效负载作为“发送”;System.Collections.Hashtable“;而不是实际数据_Json_Powershell_Post_Hash_Payload - Fatal编程技术网

POST的JSON有效负载作为“发送”;System.Collections.Hashtable“;而不是实际数据

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

我正在使用Powershell动态创建数据的有效负载,以便打包并在RESTAPI Post请求中发送

我的问题是,当API接收到它时,它被列为System.Collections.Hashtable。很明显,我在格式化数据的过程中犯了一些错误,但似乎没有任何东西适合我

下面是API接收它的方式

{
"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
。这就解决了它!!谢谢