При построении вложенных таблиц словаря / ha sh в PowerShell отображается "System.Collections.Hashtable" - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь создать тело для веб-запроса в виде вложенного словаря.

$body +=@{}
$body["tables"] = @()
$body["tables"] += @{}
$body["tables"][0]["id"] += @{}
$body["tables"][0]["id"]["columnId"] = "1"
$body["tables"][0]["id"]["fieldType"] = "1"
$body["tables"][0]["textFilter"] = @{"value" = "123"}
$body2Json = ConvertTo-Json $body

Когда я пытаюсь распечатать это, я получаю следующее:

{
    "tables":  [
                   {
                       "id":  "System.Collections.Hashtable",
                       "textFilter":  "System.Collections.Hashtable"
                   }
               ]
}

Не уверен, что я здесь делаю не так, все еще новичок в PowerShell

1 Ответ

0 голосов
/ 07 мая 2020

Вы создали довольно сложный многоузловой объект PowerShell, но командлет ConvertTo-Json преобразует только первые два уровня глубины, прежде чем он остановится.

К счастью, это поведение можно контролировать с помощью параметра -Depth следующим образом:

ConvertTo-Json $body -Depth 5

{
    "tables":  [
                   {
                       "id":  {
                                  "columnId":  "1",
                                  "fieldType":  "1"
                              },
                       "textFilter":  {
                                          "value":  "123"
                                      }
                   }
               ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...