我正在PowerShell中使用哈希表,如下所示:
当我将其转换为JSON时,请注意“橙色”键不包含方括号:
当我通过执行以下操作创建哈希表时,我试图适应这种情况:
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时,我得到了:
我正在尝试将单个项目也包含在[]
中。我在这里找到了一些东西,其中之一带我去了:
https://superuser.com/questions/414650/why-does-powershell-silently-convert-a-string-array-with-one-item-to-a-string
但是当它只包含一个项目时,我不知道如何只针对那个键。
答案 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)
问题将消失。