ConvertTo-Json拆箱单个项目

时间:2018-11-26 22:00:08

标签: json powershell

我正在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 :(得分:1)

您要确保所有哈希表值都是数组(这就是哈希表输出中大括号和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)

问题将消失。