PowerShell 中的 JSON 数组

Posted

技术标签:

【中文标题】PowerShell 中的 JSON 数组【英文标题】:JSON Array in PowerShell 【发布时间】:2017-03-06 22:34:27 【问题描述】:

我正在尝试在 PowerShell 中生成以下 JSON 字符串:

[
    
        "FirstName": "Test",
        "LastName": "Account2"
    
]

我目前在 PowerShell 中的代码是:

$Body = @
    @
        FirstName='Test'
        LastName='Account2'
     

我得到的错误是:在散列文字中的键后缺少“=”运算符。

【问题讨论】:

【参考方案1】:

外部 [] 是 JSON 中的列表,您正在尝试使用 @,它是 PowerShell 中的哈希表。使用@(),它是 PowerShell 中的一个数组(列表):

$Body = @(
    @
        FirstName='Test'
        LastName='Account2'
    
)
ConvertTo-Json -InputObject $Body

(我使用 -InputObject 而不是管道,因为 PowerShell 痴迷于讨人喜欢的列表,否则会删除列表)。

【讨论】:

谢谢!这是一种享受。我还更新了脚本以使用您提到的 InputObject。再次感谢!【参考方案2】:

我在向 Powershell 列表添加新项目时遇到了一些问题。我尝试使用 .add() 函数添加项目。这返回了错误"Collection was of a fixed size."

使用 += 符号将项目添加到列表很简单。

$Body += @FirstName='Test2'; LastName='Account3'

就这么简单。

【讨论】:

小心,+= 应该非常昂贵,因为它创建了一个新数组,新元素附加到末尾。然后用新数组替换旧数组。见***.com/questions/14620290/array-add-vs

以上是关于PowerShell 中的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell - 使用排序的对象数组打印 JSON 输出?

PowerShell - ConvertFrom-Json 无法正确序列化具有混合属性的 JSON 项目数组 [重复]

在 PowerShell 中将没有展平列表的 JSON 数组写入文件

展平 Powershell 对象中的子数组,包括父对象属性

powershell 来自https://stackoverflow.com/questions/1862554/get-childitem-recurse-as-a-parameter-in-pow

我的 PowerShell 脚本仅在从 ISE 运行时才有效