在PowerShell中将数组转换为JSON字符串非常简单:
@(1,2,3) | ConvertTo-Json
生成:
[
1,
2,
3
]
然而,如果数组为空,则结果为空字符串:@() | ConvertTo-Json
结果返回一个空字符串而不是 []
。
在PowerShell中将数组转换为JSON字符串非常简单:
@(1,2,3) | ConvertTo-Json
生成:
[
1,
2,
3
]
然而,如果数组为空,则结果为空字符串:@() | ConvertTo-Json
结果返回一个空字符串而不是 []
。
它可以在没有流水线的情况下工作
PS C:\> ConvertTo-Json @()
[
]
这是一种使用一元逗号运算符的用例,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
@()
,它将无法工作。 因此,ConvertTo-Json .\test.ps1
不会产生任何结果。 - Marc