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

问题描述 投票:0回答:3

在 PowerShell 中将数组转换为 JSON 字符串再简单不过了:

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

产品:

[
    1,
    2,
    3
]

但是,如果数组为空,则结果为空字符串:

@() | ConvertTo-Json

结果是空字符串而不是

[]

arrays json powershell
3个回答
12
投票

无需管道即可工作

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

]

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

0
投票

PS C:\src\OBAR> ConvertTo_Json @()[] 在行:1 字符:20

  • ConvertTo_Json @()[]
  •                ~
    

数组索引表达式缺失或无效。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullQualifiedErrorId:缺少ArrayIndexExpression

© www.soinside.com 2019 - 2024. All rights reserved.