ConvertTo-Json распаковка одного элемента - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю в PowerShell с такой хеш-таблицей, как:

HashTable

Когда я конвертирую его в JSON, обратите внимание, что ключ "апельсины" несодержат скобки:

JSON1

Я пытался учесть это при создании своей хэш-таблицы, выполнив что-то вроде этого:

foreach ($Group in ($input | Group fruit)) {
    if ($Group.Count -eq 1) {
        $hashtable[$Group.Name] = "{" + ($Group.Group | Select -Expand number) + "}"
    } else {
        $hashtable[$Group.Name] = ($Group.Group | Select -Expand number)
    }
}

Что выглядит хорошо, когда я вывожу его как хеш-таблицу, но потом, когда я конвертирую в JSON, я получаю это:

JSON2

Я пытаюсь получить этот синглпредмет также окружен [].Я нашел здесь несколько вещей, и одна из них привела меня к этому: https://superuser.com/questions/414650/why-does-powershell-silently-convert-a-string-array-with-one-item-to-a-string

Но я не знаю, как нацелить этот единственный ключ, когда он содержит только один элемент.

1 Ответ

0 голосов
/ 27 ноября 2018

Вы хотите убедиться, что все значения хеш-таблиц являются массивами (это то, что означают фигурные скобки в выводе хеш-таблицы и квадратные скобки в JSON).

Измените этот код:

if ($Group.Count -eq 1) {
    $hashtable[$Group.Name] = "{" + ($Group.Group | Select -Expand number) + "}"
} else {
    $hashtable[$Group.Name] = ($Group.Group | Select -Expand number)
}

в это:

$hashtable[$Group.Name] = @($Group.Group | Select -Expand number)

и проблема исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...