Zac
Zac

Reputation: 305

JSON Array in PowerShell

Am trying to generate the below JSON string in PowerShell:

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

The code I have at the moment in PowerShell is:

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

The error I get with this is: Missing '=' operator after key in hash literal.

Upvotes: 13

Views: 54675

Answers (2)

daniel overdevest
daniel overdevest

Reputation: 33

I had some problems adding new items to the Powershell list. I tried to add an item using the .add() function. This returned the error "Collection was of a fixed size."

Adding items to the list is just simple by using the += symbol.

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

That simple.

Upvotes: 1

TessellatingHeckler
TessellatingHeckler

Reputation: 29033

The outer [] is a list in JSON and you're trying to use @{}, which is a hashtable in PowerShell. Use @() which is an array (list) in PowerShell:

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

(and I use -InputObject instead of piping, because PowerShell is obsessed with flattering lists, and drops the list otherwise).

Upvotes: 29

Related Questions