在 PowerShell 中将数组转换为 JSON 字符串再简单不过了:
@(1,2,3) | ConvertTo-Json
产品:
[
1,
2,
3
]
但是,如果数组为空,则结果为空字符串:
@() | ConvertTo-Json
结果是空字符串而不是
[]
。
无需管道即可工作
PS C:\> ConvertTo-Json @()
[
]
管道正在将阵列分开。在第一个示例中,数组在通过管道时被分解为整数值(我不确定在另一侧重新组装的实际机制是什么:如果管道在逻辑上看到三个整数)组合在一起或者是否是由接收 cmdlet 本身完成的某种解释)。无论如何,使用一元运算符“,”创建一个包含一个元素的数组。当用作
, @(1, 2, 3)
或 , @()
时,它会创建一个容器数组,该数组仍被管道分解,但子数组是要传递并保留的对象,以便由 ConvertTo-Json cmdlet 正确解释。假设您的数组存储在像 $myArray 这样的变量中,以下通用代码适用于所有情况:
, $myArray | ConvertTo-Json
PS C:\src\OBAR> ConvertTo_Json @()[] 在行:1 字符:20
~
数组索引表达式缺失或无效。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullQualifiedErrorId:缺少ArrayIndexExpression