如何使用PowerShell创建一个有效的空JSON数组?

13

在PowerShell中将数组转换为JSON字符串非常简单:

@(1,2,3) | ConvertTo-Json

生成:

[
    1,
    2,
    3
]
然而,如果数组为空,则结果为空字符串:
@() | ConvertTo-Json

结果返回一个空字符串而不是 []

2个回答

12

它可以在没有流水线的情况下工作

PS C:\> ConvertTo-Json @()
[

]

1
有趣的是(可悲的是),如果脚本(例如test.ps1)返回@(),它将无法工作。 因此,ConvertTo-Json .\test.ps1不会产生任何结果。 - Marc

0

这是一种使用一元逗号运算符的用例,https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-7.2

管道正在将数组分解。在第一个示例中,当数组通过管道传递时,它被分解为其整数值(我不确定它在另一侧重新组装的实际机制是什么:是管道逻辑上看到三个整数分组还是接收 cmdlet 自身进行的某些解释)。无论如何,使用一元运算符','创建一个元素的数组。当作为, @(1, 2, 3), @()使用时,它创建一个容器数组,仍然被管道分解,但子数组是要传递和保留的对象,以便由 ConvertTo-Json cmdlet 正确解释。假设您的数组存储在像 $myArray 这样的变量中,则以下通用代码适用于所有情况:

, $myArray | ConvertTo-Json

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接